标题: [文件操作] 修改子目录中文件的后缀名 [打印本页]
作者: 墨者革离 时间: 2008-11-29 18:54 标题: 修改子目录中文件的后缀名
先申明,本人不会批处理,完全是爱好
求一个批处理.
批量修改指定目录(含子目录)中所有TXT文件的后缀名为tmp.
假设有文件夹是C:\ABC, 用批处理实现修改ABC目录和子目录中所有的TXT文件后缀名*.txt,改为TMP文件*.tmp.
需要强调的是: 子目录.
在论坛中搜索过了.不是看不懂,就是不明确.
[ 本帖最后由 墨者革离 于 2008-11-29 20:25 编辑 ]
作者: namejm 时间: 2008-11-29 20:00
用这个代码试试(请先创建测试目录,在测试目录中做试验):- @echo off
- for /f "delims=" %%i in ('dir /ad /b /s "c:\abc" 2^>nul') do ren "%%i\*.txt" *.tmp
- pause
复制代码
作者: 墨者革离 时间: 2008-11-29 21:35
代码中在那里指定目录 C:\ABC, 不懂.
作者: namejm 时间: 2008-11-29 21:44
2楼已经添加了目录 c:\abc ,请测试。
作者: 墨者革离 时间: 2008-11-29 21:59
经测试可以, 但命令暂停后,出现四行系统找不到文件. 因为目录下文本太多,不知道错在那里.
刚才在别处找到一组代码,没有提示错误.
- @echo off
- FOR /R c:\abc %%a IN (*.txt) DO (ren %%a %%~na.tmp)
- pause
复制代码
谢谢管理员的关心支持.
作者: namejm 时间: 2008-11-30 00:03
用dir方案来重命名文件时提示说系统找不到文件,是因为那些文件具有隐藏或者系统属性,而 for /r 的时候,不会搜索到这些文件,所以没有提示错误。
如果你需要对所有属性的文件都要改后缀名,并且不在意文件的属性是否被修改的话,那么,请使用以下代码(先去掉所有txt文件可能存在的系统及隐藏属性):- @echo off
- for /f "delims=" %%i in ('dir /ad /b /s "c:\abc" 2^>nul') do (
- attrib -h -s *.txt
- ren "%%i\*.txt" *.tmp
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |