在批处理文件中使用 Image Magick 进行循环

在批处理文件中使用 Image Magick 进行循环

我正在尝试循环遍历文件夹,使用批处理文件中的 Image Magick 将 SVG 文件转换为 PNG 文件:

我想要将新的 PNG 文件放入新文件夹中。

这就是我所拥有的:

for /r %%f in ("C:\Users\tatte\Desktop\SVG") do (
SET filename = %~nxf
magick "C:/Users/tatte/Desktop/SVG/%filename%" "C:/Users/tatte/Desktop/TV/%filename%.png"
)

SVG 文件夹中的文件未经转换,也不在 TV 文件夹中。

答案1

您的代码/语法包含一些错误:

for /Recursevelly %%f in "C:\Users\tatte\Desktop\SVG") do...
SET filename|⇄|=|⇄|%~nxf  
magick "C:/Users/tatte/Desktop/SVG/Name From /R File in Subfolder" ^
                "C:/Users/tatte/Desktop/TV/Set var = using space+single % .png"
  1. 您使用了错误的递归for循环,并且没有指出要在循环过程中使用哪些文件

  2. 使用时set无需空格before==after等号,而是%%使用%

  3. "C:/Users/tatte/Desktop/SVG/%filename%"这是一个使用具有递归来源(除了定义错误)的变量的固定路径%filename%,其中名称可能属于子文件夹中的文件,并且不会在指出的固定级别找到。


  1. For /F也许你可以尝试For /R使用Where /R
  2. set filename = %%i在循环本身中使用 %% i 变量进行替换/删除
@echo off 

Set "_Yours_Files=%userprofile%\Desktop\SVG"
Set "_ImageMagick=C:\Program Files\ImageMagick-7.0.10-Q16-HDRI"

for /f tokens^=* %%i in ('%__APPDIR__%where.exe /r "%_Yours_Files%" *.svg"
')do "%_ImageMagick%\magick.exe" "%%i" "%userprofile%\Desktop\TV\%%~ni.png"

循环For /FWhere /R递归)将找到所有 svg 文件(*.svg)并将完整路径作为参数传递给 ImageMagick


相关内容