【问题标题】:How to rename the extension (.jpg) of multiple files in multiple subfolders?如何重命名多个子文件夹中多个文件的扩展名(.jpg)?
【发布时间】:2016-05-06 11:54:12
【问题描述】:

我将我所有的家庭相册收集在一个主文件夹中,其中包含数百个子文件夹,其中包含数百张图像。如何转换所有这些画廊而不在每个子文件夹中复制 bat 文件并在每个文件夹中运行它?

我有超过一千个画廊,请帮忙!

这是我尝试编写的命令:

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

但是insn不起作用,我不知道我做错了什么..

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

【问题讨论】:

  • 重命名它们实际上并没有将它们从一种图像类型转换为另一种图像类型,我认为你应该先看看。
  • 在命令提示符下键入时,批处理文件需要 %%A 而不是 %A。
  • @Dennis van Gils:如何使用相同的命令将它们全部转换?
  • 为什么要将 JPEG 照片转换为 PNG 格式?这通常不是一个好主意,因为 JPEG 为照片提供更好的压缩(更小的文件大小),而 PNG 通常更适合计算机图形。
  • @MarkSetchell 虽然 questionably 建议使用 JPEG 而不是 PNG,但这并没有增加问题。很有可能某些外部源需要 png,在这种情况下,需要转换文件。

标签: batch-file


【解决方案1】:

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

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

不幸的是,windows 没有本地转换图像的方法。这意味着您需要一个 3rd 方工具,例如 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 工作后,我寻找了一个替代方案,并找到了 GraphicsMagick,它是可用的 here。安装后,我更新了脚本,这次它工作了。

@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 位于与上述路径相同的路径,否则您应在脚本中编辑路径。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
相关资源
最近更新 更多