Mac上用Automator构建批量压缩工具需理清目标、选对动作链路并配合适当触发方式,依赖Shell脚本桥接实现按时间筛选、图片双控压缩、PDF原位替换等功能,支持快速操作、应用或文件夹操作等多种部署形式。

Mac 上用 Automator 构建批量压缩文件工具,关键不是“点几下就完事”,而是理清目标类型、选对动作链路、再配合适当触发方式。它不依赖第三方软件,全靠系统原生能力,但得把 Shell 脚本和图形操作配合好。
按时间筛选旧文件再打包
适合归档日志、临时文档等有明确“年龄”要求的场景。Automator 本身不能直接按修改日期筛选,必须用 Shell 脚本桥接:
- 添加“运行 Shell 脚本”操作,Shell 设为 /bin/zsh
- 输入命令如:find ~/Downloads -type f -mtime +30 -name "*.tmp"(找 Downloads 下 30 天前的 .tmp 文件)
- 后续接另一个“运行 Shell 脚本”,用 zip -q -r "$HOME/Desktop/archive_$(date +%Y%m%d).zip" "$@" 把上一步结果打包
- 加 -q 参数避免终端输出干扰流程,"$@" 确保接收前一步传来的所有路径
针对图片做尺寸+质量双控压缩
单纯改大小或只转格式都不够,实际常用的是“缩放+转 JPEG+调质量”三步合一:
- 拖入“调整图像大小”,设目标宽度(如 1200 像素),取消勾选“覆盖原始文件”保留源图
- 接着拖入“更改类型”操作,选 JPEG 格式
- 再加“运行 Shell 脚本”,用 sips --match 'JPEG' --setProperty format jpeg --setProperty formatOptions 75 "$1" 控制输出质量(75 是平衡值,60–80 可调)
- 最后用“移动 Finder 项目”把结果统一存到 ~/Pictures/Compressed 这类固定目录
PDF 批量压缩并原位替换
PDF 压缩不能靠图像操作,得调用系统自带的 Quartz 渲染能力:
- 新建“快速操作”,接收“PDF 文件”,位于“Finder 中”
- 拖入“运行 Shell 脚本”,Shell 设为 /bin/bash,传递输入设为“作为参数”
- 脚本内容示例:for f in "$@"; do qpdf --linearize "$f" "${f%.*}_compressed.pdf" && rm "$f" && mv "${f%.*}_compressed.pdf" "$f"; done
- qpdf --linearize 是 macOS 自带命令,能有效减小 PDF 体积且不损文字清晰度;rm + mv 实现原文件被压缩版无缝替换
做成应用或定时自动跑
保存成什么类型,决定你怎么用它:
- 选“快速操作”:右键文件→服务里直接调用,适合偶尔手动处理
- 选“应用程序”:双击运行,可设默认路径(如固定压缩 Desktop 下所有 PNG),适合固定任务
- 选“文件夹操作”:把工作流绑定到某个监控文件夹,一丢文件进去就自动压缩,适合收图/收报告场景
- 想定时执行(比如每周日凌晨压缩旧文件):保存为“应用程序”,再用 launchd 配置 plist,设 StartCalendarInterval 为 { Hour = 0; Minute = 30; }

















