ps: 发现 Automator 支持一次并行处理(有多少项输入,工作流程就并行运行多少次),这样使用 Hazel 逐个处理的意义也没有了,也就是说直接使用 Automator 还能运行得更快,之后有时间再说明一下。

问题

最近由于工作原因,需要整理大量文件夹,文件夹内容是大量图片以及若干文档。而我的任务则是:

  1. 图片进行排序
  2. 转换为 PDF
  3. 重命名为文件夹名
  4. 删除图片

其实是挺简单的任务,所以刚开始是利用 FilePane 的功能,把图片拖拽进去生成 PDF,然后重命名再把图片删除。但再简单的任务,经过多次重复操作也总会乏味,因此想找一个一劳永逸的解决方案:把所需转换文件夹拖拽进监控文件夹,识别并处理

思路

一开始打算用 Keyboard Maestro 实现,无奈官方的内置服务并没有 PDF,之后发现了 Automator。

主要思路:

  1. 利用 Hazel 监控文件夹,并筛选出增加的文件夹
  2. 新建 Automator
  3. 记录下文件夹路径 记为 filePath,文件夹名记为 folderName
  4. 获得文件夹内容,过滤出图片,记录图片路径为 imagePath 用图片新建 PDF(默认命名为 用图像新建 PDF 输出,默认路径为桌面)记录 PDF 路径到 filePath
  5. 用 folderName 替换文本 用图像新建 PDF 输出
  6. 利用 AppleScript 将 PDF 从桌面移动到文件夹
  7. 删除图片

效果


详细步骤

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。

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

总结

点此下载


11
3