我正在尝试循环遍历文件夹,使用批处理文件中的 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"
您使用了错误的递归
for
循环,并且没有指出要在循环过程中使用哪些文件使用时
set
无需空格before=
和=after
等号,而是%%
使用%
"C:/Users/tatte/Desktop/SVG/%filename%"
这是一个使用具有递归来源(除了定义错误)的变量的固定路径%filename%
,其中名称可能属于子文件夹中的文件,并且不会在指出的固定级别找到。
For /F
也许你可以尝试For /R
使用Where /R
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 /F
(Where /R
递归)将找到所有 svg 文件(*.svg
)并将完整路径作为参数传递给 ImageMagick