重命名Dos批处理文件中的多个文件
下可以完成你在找什么。它使用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 2011-06-15 16:19:20
@JustMe:我编辑了响应并在'%% f'处加引号来处理带空格的文件名。然而,并不清楚为什么只有一个文件会被处理。这可能是由于不同的DOS版本。 – 2011-06-15 16:34:09
+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 前右
不错,但是我想用批处理文件(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。
如果新名称与旧名称有任何关系,这无关紧要吗?例如AAA.txt - > 1.txt,BBB.txt - > 2.txt – Kev 2011-06-15 14:48:18
不,我想用串行命令重命名。 cat.txt,dog.txt,rat.txt - > 1.txt,2.txt,3.txt等 – JustMe 2011-06-15 14:51:57