[英]Rename files with different extensions via Windows batch
我花了两天时间,并查看了我能找到的大多数论坛文件。 这是场景:
我有成千上万个图像文件:img_123.jpg,img_124.cr2,img_125.mov等,我需要将它们命名为:64,001.jpg 64,002.cr2 64,003.mov等。 基本上重命名文件,同时保持原始扩展名不变,同时在千位中放置逗号。
感谢阅读了有关堆栈溢出的有用的问答,我能够写出一些东西,或者A)连续地重命名文件,但是没有逗号(64001.jpg 64002.cr2 64003.mov等); 或B)仅将唯一文件重命名为唯一类型(img_123.jpg变为64,001.jpg很好,而img_124.jpg img_125.jpg等)均失败,并出现错误,指出文件名不是唯一的。
这是我的代码:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=c:\sourcedir"
SET /a num=64000
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*" '
) DO (
IF !num! lss 1000000 (
SET "newname=!num:~0,-3!,!num:~-3!"
) ELSE (
SET "newname=!num:~0,-6!,!num:~-6,3!,!num:~-3!"
)
ECHO REN "%sourcedir%\%%a" "!newname!%%~xa"
SET /a num+=1
)
GOTO :EOF
您所需要做的就是设置sourcedir
以适合您的系统。
所需REN命令仅仅ECHO
编用于测试目的。 验证命令正确无误后 ,将ECHO REN
更改为REN
即可实际重命名文件。
这就是有效的方法,这要感谢Magoo提出了95%的解决方案。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=G:\ch\dos batch tests\# Projects\see if you can insert a coma"
SET /p num=enter the next higher image number here:
FOR /f "delims=" %%a IN (
'dir *.jpg *.cr2 *.mov /b /a-d "%sourcedir%\*.jpg *.cr2 *.mov" '
) DO (
IF !num! lss 1000000 (
SET "newname=!num:~0,-3!,!num:~-3!"
) ELSE (
SET "newname=!num:~0,-6!,!num:~-6,3!,!num:~-3!"
)
REN "%sourcedir%\%%a" "!newname!%%~xa"
SET /a num+=1
)
GOTO :EOF
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.