1

我正在尝试使用名为mogrify.

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

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

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

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

独立地,该命令确实起作用并且图像被调整大小:

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

如果我删除调整大小参数,该命令也可以工作,但当然图像没有调整大小:

对于 (.jpg, .png, .gif) 中的 %G 执行 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>到以下命令中?

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

4

1 回答 1

2

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

要在命令行中包含特殊字符,请使用 0xHH 格式的字符的十六进制代码(例如,0x09 用于制表符)。内部 CMD.exe 命令应以“cmd /c”开头。

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

于 2015-03-12T12:07:46.053 回答