ImageMagick mogrify命令在Automator中报错及解决过程
解决Automator服务执行ImageMagick图片格式转换脚本的问题
问题描述
编写了一段用于将非.jpg格式图片转换为jpg并删除原文件的脚本:
mogrify -format jpg *.* && find . -type f ! -name "*.jpg" -delete
该脚本在终端运行正常,但创建为Automator右键服务执行时,先后遇到两个问题:
- 报错
zsh:1: command not found: mogrify - 解决命令路径问题后,出现脚本执行目录错误的情况
解决方案
1. 修复“command not found: mogrify”问题
Automator的Shell环境PATH与终端不一致,无法直接找到mogrify命令。对于Homebrew安装的ImageMagick,需使用完整路径的magick命令(Homebrew版ImageMagick统一以magick作为入口调用子命令),替换原命令中的mogrify:
/opt/homebrew/bin/magick mogrify -format jpg *.* && find . -type f ! -name "*.jpg" -delete
2. 修复执行目录错误问题
Automator默认工作目录并非选中文件/文件夹的目录,需先切换到目标目录再执行脚本。需将Automator的“Run Shell Script”动作设置为传递输入:作为参数,然后使用以下脚本:
for item in "$@"; do # 切换到当前项所在目录 target_dir=$(dirname "$item") cd "$target_dir" || exit 1 # 执行转换及删除操作 /opt/homebrew/bin/magick mogrify -format jpg *.* && find . -type f ! -name "*.jpg" -delete done
最终效果
调整后的脚本可通过Automator右键服务,正确处理选中的文件或目录,完成格式转换并清理原文件。
内容的提问来源于stack exchange,提问作者Lirrr
相关产品推荐
相关产品推荐

