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,以获得需要转换的最新图像
答案 0 :(得分:0)
一些问题:
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
传递给convert命令,将%%i
传递给它以传递来自{的文件名{1}}循环。然后,您可以传递for
而不是!Var1!
,以便将对Var1的最新更改传递给转换程序。