我正在收集所有家庭相册,主要有数百个子文件夹,里面有数百张图片。如何转换所有这些画廊而不在每个子文件夹中复制bat文件并在每个文件夹中运行它?
我有超过1k的画廊,请帮忙!
这是我试图写的命令:
@ECHO OFF FOR /f "delims=*" %a IN ('dir *.jpg /b /s') do REN "%a" *.png
但是没有工作,我也不知道自己做错了什么..
PS:文件夹和子文件夹仍处于通用位置,我没有固定位置,因为我总是将文件从磁盘移动到其他位置。我使用的是Windows 8.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与上面给出的路径相同,否则您应该编辑脚本中的路径。