【问题标题】:Rename Multiple files with in Dos batch file使用 Dos 批处理文件重命名多个文件
【发布时间】:2011-06-15 14:44:43
【问题描述】:

我希望重命名文件夹 *.txt 中的所有文件, 所以结果将是 “1.txt”、“2.txt”和“3.txt”,......

我该怎么做?

【问题讨论】:

  • 新名称是否与旧名称有任何关系?例如AAA.txt -> 1.txt, BBB.txt -> 2.txt
  • 不,我想用序列号重命名它,例如cat.txt, dog.txt, rat.txt -> 1.txt, 2.txt, 3.txt 等等

标签: windows batch-file dos


【解决方案1】:

以下内容可能会满足您的需求。它使用for 循环遍历文本文件并“调用”批处理文件的另一位来重命名和增加变量。

编辑将数学运算更改为 Andriy 建议的更简洁的解决方案。

@echo off
set i=1
for %%f in (*.txt) do call :renameit "%%f"
goto done

:renameit
ren %1 %i%.txt
set /A i+=1

:done

【讨论】:

  • 有两个问题,只重命名了一个文件,如果文件名中包含空格,则批处理不能重命名任何文件
  • @JustMe:我编辑了响应并在%%f 周围加上引号以处理带有空格的文件名。但是,尚不清楚为什么只处理一个文件。这很可能是由于不同的 DOS 版本。
  • +1。顺便说一句,SET /A i=i+1 甚至 SET /A i+=1 也可以。
  • @Andriy:谢谢。那更干净;我做了那个改变。我没有意识到这行得通(有一天我会学会阅读文档......也许)。
  • @MarkWilkins,嘿,这很好用,但是您如何保留原始名称?我的原始文件名是20160824.txt,它将它们全部重命名为1.txt ..4.txt
【解决方案2】:

首先制作一个目录列表:

dir /b *.txt > myfile.cmd

然后启动 UltraEdit (http://www.ultraedit.com/) 并打开文件。

然后进入列模式,选择所有行,然后:

  • 在每一行的开头插入“RENAME”
  • 在每一行的末尾插入“.TXT”(如果行很长,请确保将其放在足够远的位置)
  • 在 .TXT 之前插入一个数字(请参阅菜单中的列/插入数字)

【讨论】:

    【解决方案3】:

    我希望重命名文件夹 *.txt 中的所有文件,所以结果将是“1.txt”、“2.txt”和“3.txt”,......

    我该怎么做?

    ::Setup the stage...
    SETLOCAL ENABLEDELAYEDEXPANSION
    SET folder=C:\This\Is\The\Folder
    SET count=1
    
    ::Action
    CD "%folder%"
    FOR %%F IN ("*.txt") DO (
     MOVE "%%F" "!count!.txt"
     SET /a count=!count!+1
    )
    ENDLOCAL
    

    速记

    SETLOCAL ENABLEDELAYEDEXPANSION
    SET count=1
    FOR %%F IN (C:\Path\To\File\*.txt) DO MOVE "%%~fF" "%%~dpF!count!.txt" & SET /a count=!count!+1
    ENDLOCAL
    

    因此,如果您的文件夹包含 cat.txt、dog.txt、bird.txt、ninjaturtle.txt,它将输出 1.txt、2.txt、3.txt、4.txt。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-25
      • 2014-02-26
      • 1970-01-01
      • 2019-06-08
      • 2013-06-25
      • 1970-01-01
      相关资源
      最近更新 更多