我试图遍历目录,并对每个jpg文件执行以下操作:
magick "C:\InputFolder\001.jpg" -trim "C:\OutputFolder\001.jpg"
到目前为止,我有这个:
for %%f in (*.jpg) do
magick "C:\InputFolder\%%~nf.jpg" -fuzz 50% -trim "C:\OutputFolder\%%~nf.jpg"
但这不起作用,如何在带引号的字符串中获取%%〜nf变量?
答案 0 :(得分:1)
要遍历给定目录,建议使用for /r
。
批量:
@echo off
set "des=C:\OutputFolder"
for /r "C:\InputFolder" %%A in (*.jpg) do (
magick "%%A" -fuzz 50%% -trim "%des%\%%~nxA"
)
(您可能需要将-fuzz 50%
上的百分号加倍以进行批处理)。
从命令:
for /r "C:\InputFolder" %A in (*.jpg) do (magick "%A" -fuzz 50% -trim "C:\OutputFolder\%~nxA")
最后一组括号不是必需的,但我喜欢使用它们。
答案 1 :(得分:0)
无论您是使用CLI还是编写批处理脚本,都需要使用括号来使代码在DO语句后跨越多行。
假设您正在编写CMD脚本(因为您拥有%%而不是%),那么该操作就很有用:
@(
SetLocal
ECHO OFF
SET "_Dst=C:\OutputFolder"
)
FOR %%A in (
"C:\InputFolder\*.jpg"
) DO (
ECHO. Magick "%%~fA" -fuzz 50%% -trim "%_Dst%\%%~nA"
Magick "%%~fA"-fuzz 50%% -trim "%_Dst%\%%~nA"
)
如果您在CLI(CMD)窗口中,则可以粘贴以下内容:
@ECHO OFF
SET "_Dst=C:\OutputFolder"
FOR %A in (
"C:\InputFolder\*.jpg"
) DO (
ECHO. Magick "%~fA" -fuzz 50% -trim "%_Dst%\%~nA"
REM Magick "%~fA" -fuzz 50% -trim "%_Dst%\%~nA"
)