Board logo

标题: [文件操作] 修改子目录中文件的后缀名 [打印本页]

作者: 墨者革离    时间: 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

  用这个代码试试(请先创建测试目录,在测试目录中做试验):
  1. @echo off
  2. for /f "delims=" %%i in ('dir /ad /b /s "c:\abc" 2^>nul') do ren "%%i\*.txt" *.tmp
  3. pause
复制代码

作者: 墨者革离    时间: 2008-11-29 21:35

代码中在那里指定目录 C:\ABC,   不懂.
作者: namejm    时间: 2008-11-29 21:44

  2楼已经添加了目录 c:\abc ,请测试。
作者: 墨者革离    时间: 2008-11-29 21:59

经测试可以, 但命令暂停后,出现四行系统找不到文件. 因为目录下文本太多,不知道错在那里.

刚才在别处找到一组代码,没有提示错误.

  1. @echo off
  2. FOR /R c:\abc %%a IN (*.txt) DO (ren %%a %%~na.tmp)
  3. pause
复制代码


谢谢管理员的关心支持.
作者: namejm    时间: 2008-11-30 00:03

  用dir方案来重命名文件时提示说系统找不到文件,是因为那些文件具有隐藏或者系统属性,而 for /r 的时候,不会搜索到这些文件,所以没有提示错误。

  如果你需要对所有属性的文件都要改后缀名,并且不在意文件的属性是否被修改的话,那么,请使用以下代码(先去掉所有txt文件可能存在的系统及隐藏属性):
  1. @echo off
  2. for /f "delims=" %%i in ('dir /ad /b /s "c:\abc" 2^>nul') do (
  3.     attrib -h -s *.txt
  4.     ren "%%i\*.txt" *.tmp
  5. )
  6. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2