标题: [文本处理] 批处理如何更改扩展名并保留原文件 [打印本页]
作者: meiszp 时间: 2017-1-8 12:30 标题: 批处理如何更改扩展名并保留原文件
本帖最后由 meiszp 于 2017-1-8 12:33 编辑
在论坛搜索了下,都是直接更改文件扩展名,原文件也没了。
ren *.dat*.txt不能更改子文件夹下的。
求批处理可以更改当前文件夹及子文件夹下所有 dat文件为txt文件,并且保留原dat文件,将新txt文件放入当前目录下的new文件夹。
作者: pcl_test 时间: 2017-1-9 07:39
本帖最后由 pcl_test 于 2017-1-9 15:25 编辑
你以前的贴
http://www.bathome.net/viewthread.php?tid=41777- powershell "$fd='new\';md $fd -force|out-null;ls . *.dat -r|%%{cp $_.FullName ($fd+$_.BaseName+'.txt')}"
- pause
复制代码
作者: Nsqs 时间: 2017-1-9 15:00
- @xcopy /syi "目标目录\*.dat" "new\*.txt"
复制代码
这么简单其实百度一下就有了
作者: meiszp 时间: 2017-1-11 00:29
代码不能执行,对syi不明白, 还有就是目标了目录怎么默认成批处理所在的目录。
作者: Nsqs 时间: 2017-1-11 00:50
回复 4# meiszp
s是子目录 y是不显示任何确认提示i是如果目录不存在则创建 在运行输入cmd /k xcopy/?可以看到用法
作者: GNU 时间: 2017-1-11 20:23
回复 4# meiszp - @echo off
- xcopy /s /y /i "%~dp0*.dat" "new\*.txt"
复制代码
作者: meiszp 时间: 2017-1-11 23:28
回复 6# GNU
试验了下,好像不能实现。
作者: GNU 时间: 2017-1-11 23:37
回复 7# meiszp
报错信息发出来看看
作者: meiszp 时间: 2017-1-11 23:40
- @echo off
- set /p c=是否保留源文件[y/n]:
- for /f "delims=" %%i in ('dir /b /s /a-d *.txt') do (
- if /i "%c%" equ "y" (
- copy "%%i" "%%~dpi%%~ni.dat" /y
- ) else ren "%%i" "%%~ni.dat"
- )
- pause
复制代码
此代码可以实现更改扩展名,但更改后的文件是在各个子目录里,和原文件同目录,如何实现把更改后的文件放入当前目录下新建的new文件夹。
作者: meiszp 时间: 2017-1-11 23:42
回复 8# GNU
没有报错信息,一闪而过。
作者: GNU 时间: 2017-1-11 23:52
回复 10# meiszp
不要双击执行,打开一个CMD窗口,手工执行可以看到报错信息。
作者: meiszp 时间: 2017-1-12 21:30
回复 11# GNU
提示,不能执行循环复制。
作者: meiszp 时间: 2017-1-12 21:34
本帖最后由 meiszp 于 2017-1-12 22:12 编辑
回复 2# pcl_test
你好!谢谢之前的代码 ,但更改后的文件和原文件同目录,现在子目录很多,需要一个一个目录找出文件,如何实现把更改后的所有文件放入当前目录下新建的new文件夹,不包含子目录。谢谢!
作者: GNU 时间: 2017-1-12 21:34
回复 12# meiszp
把 new 这个文件夹放到当前文件夹的上级目录:- @echo off
- md ..\new
- xcopy /s /y /i "%~dp0*.dat" "..\*.txt"
复制代码
作者: meiszp 时间: 2017-1-12 22:08
本帖最后由 meiszp 于 2017-1-12 22:37 编辑
现在可以执行了,但有两个问题:
1. 它在上级目录生成了一个new文件夹,里面是空的,其他文件提取到了上一级目录,保持了原来的目录树,
2. 删除第2行代码也可以,效果一样。
我想把更改后的所有文件放入new文件夹,并且不要子目录,只有文件。
更改成下面的,文件放入了上级new文件夹,还是保持了原理的目录结构。- @echo off
- xcopy /s /y /i "%~dp0*.dat" "..\new\*.txt"
复制代码
作者: GNU 时间: 2017-1-13 17:56
本帖最后由 GNU 于 2017-1-18 13:02 编辑
回复 15# meiszp - @echo off
- for /f "delims=" %%i in ('dir /b /s /a-d *.dat') do (
- copy /y "%%i" "..\new\%%~ni.txt"
- )
复制代码
作者: meiszp 时间: 2017-1-13 23:39
回复 16# GNU
谢谢!还是一闪而过,在cmd里提示此时不应有%%i
作者: GNU 时间: 2017-1-14 01:11
回复 17# meiszp
16楼的代码把 @echo off 删掉,保存为 test.bat
打开 CMD 窗口执行 test.bat
这样能明白吗?
作者: meiszp 时间: 2017-1-17 20:50
回复 18# GNU
你好!提示 系统找不到dir
作者: meiszp 时间: 2017-1-17 21:05
本帖最后由 meiszp 于 2017-1-17 21:06 编辑
你以前的贴
pcl_test 发表于 2017-1-9 07:39
- @echo off
- set /p c=是否保留源文件[y/n]:
- for /f "delims=" %%i in ('dir /b /s /a-d *.txt') do (
- if /i "%c%" equ "y" (
- copy "%%i" "%%~dpi%%~ni.dat" /y
- ) else ren "%%i" "%%~ni.dat"
- )
- pause
复制代码
此代码可以实现更改扩展名,但更改后的文件是在各个子目录里,和原文件同目录,如何实现把更改后的文件(不包含目录)放入当前目录下新建的new文件夹。麻烦看看,真的很需要。
作者: GNU 时间: 2017-1-18 13:03
回复 19# meiszp
16楼代码已更新,请重新测试。
作者: meiszp 时间: 2017-1-19 22:13
回复 21# GNU
在cmd 里运行bat,提示:系统找不到指定路径
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |