ps: 发现 Automator 支持一次并行处理(有多少项输入,工作流程就并行运行多少次),这样使用 Hazel 逐个处理的意义也没有了,也就是说直接使用 Automator 还能运行得更快,之后有时间再说明一下。
问题
最近由于工作原因,需要整理大量文件夹,文件夹内容是大量图片以及若干文档。而我的任务则是:
- 图片进行排序
- 转换为 PDF
- 重命名为文件夹名
- 删除图片

其实是挺简单的任务,所以刚开始是利用 FilePane 的功能,把图片拖拽进去生成 PDF,然后重命名再把图片删除。但再简单的任务,经过多次重复操作也总会乏味,因此想找一个一劳永逸的解决方案:把所需转换文件夹拖拽进监控文件夹,识别并处理。
思路
一开始打算用 Keyboard Maestro 实现,无奈官方的内置服务并没有 PDF,之后发现了 Automator。
主要思路:
- 利用 Hazel 监控文件夹,并筛选出增加的文件夹
- 新建 Automator
- 记录下文件夹路径 记为
filePath,文件夹名记为folderName - 获得文件夹内容,过滤出图片,记录图片路径为
imagePath用图片新建 PDF(默认命名为 用图像新建 PDF 输出,默认路径为桌面)记录 PDF 路径到filePath - 用
folderName替换文本 用图像新建 PDF 输出 - 利用 AppleScript 将 PDF 从桌面移动到文件夹
- 删除图片
效果

详细步骤
1. 新建 Automator

选择应用程序
2. 筛选文件夹,存入变量

- 变量
filePath接收的是一个路径如:/Users/mieq/Downloads/ - 可以运行 shell script 获得文件夹名(记得把传递输入改为作为自变量)如:
Basename /Users/mieq/Downloads/ ---> Downloads - 把文件夹名存入
folderName
3. 把图片转为 PDF

- 紧接着我们获取刚刚设定的变量
filePath(原因是上一步的输出是一个文件夹名字,并不是路径 ) - 获取内容,然后过滤出图片,并记录下路径(目的是为了之后删除这些图片,不需要的忽略),再然后新建 PDF(按默认即可,因为输出路径和文件名都只能使用常量)
- 用 Finder 项目重命名搜索默认输出名,并用变量
folderName替换即可
4. 移动PDF 文件到原本文件夹

- 获得
filePath变量,注意,因为上一个语句输出的是我们 PDF 的路径名,所以filePath是有两个路径值的一个列表了,例如:{alias "/Users/mieq/Desktop/a.pdf", alias "Macintosh HD:Users:mieq:Downloads”} - 接着运行 AppleScript 把 pdf 路径和文件夹路径取出,把 PDF 移动到文件夹路径(事实上 shell script 实现更简单 )
5. 删除图片

6. 将Automator 导出为 xxx.app
7. Hazel 设置
Hazel 是一款可以自动监控并整理文件夹的工具,其官网的介绍就是简单的一句话:Automated Organization for Your Mac。


- 选取监控文件夹
- 设置规则筛选文件夹
- 如果探测到文件夹添加则运行我们上面设置好的 Automator app
总结

