如何重命名多个子文件夹中多个文件的扩展名(.jpg)?

时间:2016-01-28 21:51:52

标签: batch-file

我正在收集所有家庭相册,主要有数百个子文件夹,里面有数百张图片。如何转换所有这些画廊而不在每个子文件夹中复制bat文件并在每个文件夹中运行它?

我有超过1k的画廊,请帮忙!

这是我试图写的命令:

@ECHO OFF  FOR /f "delims=*" %a IN ('dir *.jpg /b /s') do REN "%a" *.png

但是没有工作,我也不知道自己做错了什么..

PS:文件夹和子文件夹仍处于通用位置,我没有固定位置,因为我总是将文件从磁盘移动到其他位置。我使用的是Windows 8.1。

1 个答案:

答案 0 :(得分:1)

正如@bgalea指出的那样,您的代码存在的问题是,批处理使用的是%%a而不是%a

但是,虽然这会修复代码的语法,但仍然存在错误。将文件重命名为其他扩展程序并不会实际转换文件,例如,您无法将.txt文件重命名为.mp4并希望它能播放视频。

不幸的是,Windows没有本地方式来转换图像。这意味着您需要第三方工具,例如ImageMagick(免费)。如果安装了ImageMagick,则可以使用convert命令,如下所示:

@ECHO OFF  
FOR /f "delims=*" %%a IN ('dir *.jpg /b /s') do convert "%%a" "%%~dpna.png"

要在转换后删除文件:

@ECHO OFF  
FOR /f "delims=*" %%a IN ('dir *.jpg /b /s') do (
convert "%%a" "%%~dpna.png"
del "%%a"
)

修改

好的,所以在尝试让ImageMagick工作之后我找了一个替代方案,找到了可用的here GraphicsMagick。安装完成后,我更新了脚本,这次它运行了。

@ECHO OFF  
FOR /f "delims=*" %%a IN ('dir *.jpg /b /s') do (
"C:\Program Files (x86)\GraphicsMagick-1.3.23-Q16\gm.exe" convert "%%a" "%%~dpna.png"
del "%%a"
)

请注意,您应该确保您的gm.exe与上面给出的路径相同,否则您应该编辑脚本中的路径。