通过 image-magick convert batch 为多个文件 运行 赋予一个变量

Giving a variable to multiple files running through image-magick convert batch

for %%i in (%*) do (
   set /p Var1="Enter Pixel Size: "
   convert "%1" -thumbnail %Var1%x -unsharp 1.5x1.2+1.0+0.10 "%~p1%~n1"
   )

使用此文件,我尝试通过批处理文件以不同大小转换多个图像。

问题:Var1 要求用户输入尺寸,然后针对放置的图像进行处理。但是,当我在尝试转换多个文件时提示用户输入图像大小时,只有第一个文件及其大小生效。它会询问我第二个大小,但对于第一个文件,它会提示我是否要替换该文件。

我想要的:我希望该文件 运行 遍历每张图像,询问其大小,并一次转换一个,能够用最新的像素替换 Var1需要转换的最新图像。

几个问题:

setlocal enabledelayedexpansion
for %%i in (%*) do (
   set /p Var1="Enter Pixel Size: "
   convert "%%i" -thumbnail !Var1!x -unsharp 1.5x1.2+1.0+0.10 "%%~pi%%~ni"
)

您需要开启EnableDelayedExpansion 来支持"!"解析行时要扩展的变量的语法,而不是它们所在的块。不是将 %1 传递给转换命令,而是将 %%i 传递给它以传递 [=13 中的文件名=] 循环。然后,您可以传递 !Var1! 而不是 %Var1%,以便将对 Var1 的最新更改传递给转换程序。