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