不幸的是,我被迫使用Windows。所以,我安装了Cygwin
一些Linux命令。
以下命令工作正常。它将图像替换为其修剪后的版本。
"C:\Program Files\Cygwin\bin\convert" image1.png -trim image1.png
但是,如何在所有图像文件上运行此命令?
"C:\Program Files\Cygwin\bin\convert" * -trim ????
答案1
您安装了 cygwin,因此您可以使用它的 shell 来获得最大的命令支持:
"C:\Program Files\Cygwin\cygwin.bat
这将为您提供一个 bash shell 然后您可以更改方向以转到图像位置。假设您的图像位置是"D:\Your Name\Images"
,要转到那里cd "/cygdrive/d/Your Name/Images"
,然后使用 bash 调用您的命令for循环:
for file in *
do
convert "$file" -trim "$file"
done
答案2
将此更多地视为扩展/增强@Slyx的回答。
Cygwin 有一个有用的实用程序,cygpath
可以将 Windows 路径转换为 Cygwin bash
shell 中可以理解的 *nix 样式:
$ cygpath "D:\Path\To\Images"
/cygdrive/d/Path/To/Images
除了for
建议的显式 -loop 之外,您还可以考虑使用find
它,它可以更好地支持过滤文件名,并且可以更安全地支持带空格的名称(就像您在 Windows 中可能遇到的那样):
find "$(cygpath "D:\Path\To\Images")"/ -type f -name '*.png' -exec convert '{}' -trim '{}' \;
- 在目录内
D:\Path\To\Images
, - 查找
-type f
以 ( ) 结尾的文件png
(-name '*.png'
), - 对于每个结果文件,
exec
该convert
命令都带有'{}'
(引用的)占位符。