重命名Dos批处理文件中的多个文件

问题描述:

我希望重命名文件夹* .txt, 中的所有文件,因此结果将为 “1.txt”,“2.txt”和“3.txt”。 ...重命名Dos批处理文件中的多个文件

我该怎么做?

+0

如果新名称与旧名称有任何关系,这无关紧要吗?例如AAA.txt - > 1.txt,BBB.txt - > 2.txt – Kev 2011-06-15 14:48:18

+0

不,我想用串行命令重命名。 cat.txt,dog.txt,rat.txt - > 1.txt,2.txt,3.txt等 – JustMe 2011-06-15 14:51:57

下可以完成你在找什么。它使用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 
+0

这样做有两个问题,只有一个文件已被重命名,如果文件名包含空格,则该批处理不能重命名任何文件 – JustMe 2011-06-15 16:19:20

+0

@JustMe:我编辑了响应并在'%% f'处加引号来处理带空格的文件名。然而,并不清楚为什么只有一个文件会被处理。这可能是由于不同的DOS版本。 – 2011-06-15 16:34:09

+0

+1。顺便说一句,“SET/A i = i + 1”或甚至“SET/A i + = 1”也可以。 – 2011-06-15 19:07:57

首先做一个目录列表:

dir /b *.txt > myfile.cmd 

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

然后进入列模式,选择所有的线条,以及:

  • 插入“重命名”,在每一行
  • 插入“.TXT”在每行的结束的开始(一定要投入情况下,它远远不够的权利,你有很长的线)
  • 插入一个数字(见列/插入数字菜单).TXT
  • 前右
+1

不错,但是我想用批处理文件(dos命令) – JustMe 2011-06-15 15:37:09

我要重命名的文件夹,* .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。