Windows 10。ImageMagick v7.1.0-62
我需要使用 ImageMagick 压缩和优化大量 .jpg 图像。我使用以下命令,该命令有效(这会覆盖原始文件,这正是我想要的)。
我在所需文件夹中在 Windows 命令行中运行它(例如folder 1
)
magick morgify -gaussian-blur 0.05 -colorspace RGB -strip -quality 50 -interlace Plane *.jpg
问题是这个命令一次只能处理一个文件夹。我该如何改变它以便它从我的根文件夹递归运行到所有子文件夹。
我的文件结构如下;
- images
- - folder 1
- - - folder 1a
- - - folder 1b
- - folder 2
- - folder 3
- - - folder 3a
- - - folder 3b
答案1
您可以循环目录。在 PowerShell 中,它非常简单:
Get-ChildItem -Directory -Recurse | % { mogrify -gaussian-blur 0.05 -colorspace RGB -strip -quality 50 -interlace Plane "$($_.FullName)/*.jpg" }
它获取所有子目录,然后使用ForEach-Object
(%
)遍历返回的结果并mogrify
为每个子目录调用命令。
请注意,mogrify
如果其中一个子目录没有任何 jpg,则会引发错误,但无论如何,该命令将继续对所有子目录执行。
它也不包括您调用命令的文件夹,但您可以使用.ps1
上面的代码创建一个脚本,并mogrify -gaussian-blur 0.05 -colorspace RGB -strip -quality 50 -interlace Plane *.jpg
在其中包含命令以在那里运行它,然后执行该脚本。