ImageMagick的批处理命令,用于转换目录中的所有文件和Windows上的子目录

Key*_*Key 7 windows svg imagemagick batch-file imagemagick-convert

我在文件夹和子文件夹中有数千个SVG.我想要的是将它们全部批量转换为jpgpng图像.

有人可以帮我写一个ImageMagick(windows)的命令,它可以查找所有svg并将其转换为原始名称的jpg/png,并将它们保存在同一个目录中吗?

这是示例结构:

C:\SVG\BusinessMan.svg
C:\SVG\Models\Home.svg
C:\SVG\Underlines\underline.svg
Run Code Online (Sandbox Code Playgroud)

转换后我想要这样:

C:\SVG\BusinessMan.svg
C:\SVG\BusinessMan.jpg
C:\SVG\Models\Home.svg
C:\SVG\Models\Home.jpg
C:\SVG\Underlines\underline.svg
C:\SVG\Underlines\underline.jpg
Run Code Online (Sandbox Code Playgroud)

tem*_*007 49

您不需要 shell 脚本,只需使用mogrify命令

cd 到您的图像目录

mogrify -format png *.svg
Run Code Online (Sandbox Code Playgroud)

  • Windows 版 ImageMagick 似乎没有 `mogrify` 可执行文件,但您可以执行以下操作:`magick.exe mogrify -format png *.svg` (7认同)
  • 还有“-path”选项,将输出写入不同的文件夹而不是覆盖 (5认同)
  • 寻找 。-name '*.webp' -exec mogrify -format png {} \; (4认同)
  • 确实是最好的解决方案!使用“-format”选项可防止文件被覆盖。此处的文档:https://imagemagick.org/script/mogrify.php (2认同)

nvd*_*nvd 13

指定源路径和目标路径,将 PNG 批量转换为 JPG。

mogrify \
-path "target/dir/path/" \
-quality 85% \
-format jpg \
"src/dir/path/*.png"
Run Code Online (Sandbox Code Playgroud)


And*_*rea 8

尝试在根文件夹中FOR使用带有/R标志的循环 :

FOR /R %a IN (*.svg) DO convert "%~a" "%~dpna.jpg"
Run Code Online (Sandbox Code Playgroud)

此命令将转换.svg您从命令启动的根文件夹下的子目录中的所有文件.

以上命令适用于命令行,如果您打算在批处理文件(.bat)中使用该命令,请记住使用%%而不是%:

FOR /R %%a IN (*.svg) DO convert "%%~a" "%%~dpna.jpg"
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Imagemagick文档的页面