Batch file 识别丢失的文件并使用批处理文件按顺序重命名文件
我在文件夹中有一系列文件,例如1、2、5、6、7、8、10、11、12、15、16、17。它们都有.mp4文件扩展名。我想通过适当地重命名文件,以文件夹中文件的顺序列表结束,没有丢失的数字。非常感谢您的帮助。最棘手的部分是按数字顺序对文件进行排序。问题是DIR和SORT命令都会按字母顺序对文件名进行排序,因此10会在9之前排序。不是你想要的 使用纯批处理可以相当容易地解决这个问题,但我有一个更好的解决方案:一个混合的JScript/批处理实用程序,可以对名称进行数字排序。它是纯脚本,从XP开始在任何Windows机器上本机运行 使用JSORT.BAT,解决方案非常简单:Batch file 识别丢失的文件并使用批处理文件按顺序重命名文件,batch-file,Batch File,我在文件夹中有一系列文件,例如1、2、5、6、7、8、10、11、12、15、16、17。它们都有.mp4文件扩展名。我想通过适当地重命名文件,以文件夹中文件的顺序列表结束,没有丢失的数字。非常感谢您的帮助。最棘手的部分是按数字顺序对文件进行排序。问题是DIR和SORT命令都会按字母顺序对文件名进行排序,因此10会在9之前排序。不是你想要的 使用纯批处理可以相当容易地解决这个问题,但我有一个更好的解决方案:一个混合的JScript/批处理实用程序,可以对名称进行数字排序。它是纯脚本,从XP开始在
@echo off
pushd "c:\yourFolder"
ren *.mp4 *?.save
for /f "tokens=1* delims=:" %%A in (
'dir /b *.mp4.save^|jsort /n^|findstr /n "^"'
) do ren "%%B" "%%A.mp4"
popd
第一个REN将.save附加到所有.mp4文件的末尾(1.mp4变为1.mp4.save),这样最终的重命名就不会有任何名称冲突
真正的魔力在于FOR/F循环
- DIR/B只是列出文件,顺序无关紧要
- JSORT/N对列表进行数字排序
- FINDSTR/N“^”为每行添加行号:前缀。行号是所需的新名称
@echo off
setlocal EnableDelayedExpansion
rem Get file names and sort them
cd "C:\FolderOfFiles"
for %%a in (*.mp4) do set "i=00%%~Na" & set "num[!i:~-3!]=%%a"
rem Rename the files in the proper order
set i=0
for /F "tokens=2 delims==" %%a in ('set num[') do set /A "i+=1" & ren "%%a" "!i!.mp4"
如果要在新名称中插入左零,以便在dir
和列表中保持相同的顺序,请将最后一部分替换为该部分:
rem Rename the files in the proper order
set i=1000
for /F "tokens=2 delims==" %%a in ('set num[') do set /A "i+=1" & ren "%%a" "!i:~-3!.mp4"
结果是否会是名为1,2,3,4,5,6,7,8,9,10,11,12、扩展名为.mp4的文件?是的,这是正确的。谢谢,太棒了!工作出色。非常感谢你的支持help@crecy-如果答案完全满足您的问题,请不要忘记接受答案。只需单击答案左上角附近的复选标记。这样做可以让其他人知道问题已经得到了回答,给你2个代表点,给海报15个代表点。每个问题只能接受一个答案。