为通过image-magick转换批处理运行的多个文件提供变量

时间:2016-07-13 13:58:09

标签: batch-file imagemagick-convert

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,以获得需要转换的最新图像

1 个答案:

答案 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的最新更改传递给转换程序。