[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程批处理在线视频分享
返回列表 发帖

[文本处理] 批处理如何更改扩展名并保留原文件

本帖最后由 meiszp 于 2017-1-8 12:33 编辑

在论坛搜索了下,都是直接更改文件扩展名,原文件也没了。
ren *.dat*.txt不能更改子文件夹下的。

求批处理可以更改当前文件夹及子文件夹下所有 dat文件为txt文件,并且保留原dat文件,将新txt文件放入当前目录下的new文件夹。

回复 21# GNU


  在cmd 里运行bat,提示:系统找不到指定路径

TOP

回复 19# meiszp


    16楼代码已更新,请重新测试。

TOP

本帖最后由 meiszp 于 2017-1-17 21:06 编辑
你以前的贴
pcl_test 发表于 2017-1-9 07:39
  1. @echo off
  2. set /p c=是否保留源文件[y/n]:
  3. for /f "delims=" %%i in ('dir /b /s /a-d *.txt') do (
  4.     if /i "%c%" equ "y" (
  5.         copy "%%i" "%%~dpi%%~ni.dat" /y
  6.     ) else ren "%%i" "%%~ni.dat"
  7. )
  8. pause
复制代码
此代码可以实现更改扩展名,但更改后的文件是在各个子目录里,和原文件同目录,如何实现把更改后的文件(不包含目录)放入当前目录下新建的new文件夹。麻烦看看,真的很需要。

TOP

回复 18# GNU

你好!提示 系统找不到dir

TOP

回复 17# meiszp


16楼的代码把 @echo off 删掉,保存为 test.bat
打开 CMD 窗口执行 test.bat
这样能明白吗?

TOP

回复 16# GNU

谢谢!还是一闪而过,在cmd里提示此时不应有%%i

TOP

本帖最后由 GNU 于 2017-1-18 13:02 编辑

回复 15# meiszp
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /s /a-d *.dat') do (
  3.     copy /y "%%i" "..\new\%%~ni.txt"
  4. )
复制代码

TOP

本帖最后由 meiszp 于 2017-1-12 22:37 编辑

现在可以执行了,但有两个问题:
1. 它在上级目录生成了一个new文件夹,里面是空的,其他文件提取到了上一级目录,保持了原来的目录树,
2. 删除第2行代码也可以,效果一样。

我想把更改后的所有文件放入new文件夹,并且不要子目录,只有文件。

更改成下面的,文件放入了上级new文件夹,还是保持了原理的目录结构。
  1. @echo off
  2. xcopy /s /y /i  "%~dp0*.dat" "..\new\*.txt"
复制代码

TOP

回复 12# meiszp


把 new 这个文件夹放到当前文件夹的上级目录:
  1. @echo off
  2. md ..\new
  3. xcopy /s /y /i  "%~dp0*.dat" "..\*.txt"
复制代码

TOP

本帖最后由 meiszp 于 2017-1-12 22:12 编辑

回复 2# pcl_test

你好!谢谢之前的代码 ,但更改后的文件和原文件同目录,现在子目录很多,需要一个一个目录找出文件,如何实现把更改后的所有文件放入当前目录下新建的new文件夹,不包含子目录。谢谢!

TOP

回复 11# GNU
提示,不能执行循环复制。

TOP

回复 10# meiszp


    不要双击执行,打开一个CMD窗口,手工执行可以看到报错信息。

TOP

回复 8# GNU

没有报错信息,一闪而过。

TOP

  1. @echo off
  2. set /p c=是否保留源文件[y/n]:
  3. for /f "delims=" %%i in ('dir /b /s /a-d *.txt') do (
  4.     if /i "%c%" equ "y" (
  5.         copy "%%i" "%%~dpi%%~ni.dat" /y
  6.     ) else ren "%%i" "%%~ni.dat"
  7. )
  8. pause
复制代码
此代码可以实现更改扩展名,但更改后的文件是在各个子目录里,和原文件同目录,如何实现把更改后的文件放入当前目录下新建的new文件夹。

TOP

返回列表