调整缩小图像的大小,仅在今天修改过

Resize down-scale images only modified today

我正在尝试使用名为 mogrify.

的 ImageMagik 工具让以下命令在 Server 2003 上运行

for %G in (.jpg, .png, .gif) do forfiles /p "C:\Images" /s /m *%G -d 0 -c "cmd /c C:\ImageMagick\mogrify.exe -resize 800x800^> -quality 80 -strip @path"

但是当 mogrify 工具针对找到的路径运行时,它会出错,提示调整大小参数无效。

mogrify.exe: InvalidArgument `80Ã╬0>': -resize @error/mogrify.c/MogrifyImageCommand/5754.

我认为问题与值有关并且它包含 ^>。 需要 > 符号来告诉工具仅缩小宽度或高度,我认为需要 ^ 作为转义字符。

该命令独立运行并且图像大小已调整:

mogrify.exe -resize 800x800^> -quality 80 -strip "image1.jpg"

如果我删除调整大小参数,该命令也有效,但当然图像不会调整大小:

for %G in (.jpg, .png, .gif) do forfiles /p "C:\Images" /s /m *%G -d 0 -c "cmd /c C:\ImageMagick\mogrify.exe -quality 80 -strip @path"

我也尝试过用双引号将值括起来并多次转义 ^ 但似乎没有任何效果。

为了什么值得我可以让以下工作但删除 ^ 并从调整大小值添加引号。

cmd /c C:\ImageMagick\mogrify.exe -resize "800x800>" -quality 80 -strip image1.JPG


总结一下,我如何正确地将 800x800> 的调整大小值添加到以下命令?

for %G in (.jpg, .png, .gif) do forfiles /p "C:\Images" /s /m *%G -d 0 -c "cmd /c C:\ImageMagick\mogrify.exe -resize 800x800^> -quality 80 -strip @path"

实际上,我认为问题在于 0x80 正在从十六进制转换为 ASCII。来自 forfiles /? 帮助消息:

To include special characters in the command line, use the hexadecimal code for the character in 0xHH format (ex. 0x09 for tab). Internal CMD.exe commands should be preceded with "cmd /c".

尝试将 -resize 800X800^> 中的 X 大写。