繁体   English   中英

通过Windows批处理重命名具有不同扩展名的文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM