article_image

编注:Shortcuts 社区,尤其是中文社区,已经沉寂了太多年。早两年我就感觉到,越来越多的网站只是在玩叠床架屋的玻璃球游戏(俗称内卷),不断证明他们能够写出几百个步骤的复杂 Shortcuts,然而读者不禁疑惑:设计者本人真的会使用这些如鲁布哥德堡机械一般令人眼花缭乱的自动化玩具吗?

对 Shortcuts 社区的疑惑,在 Shortcuts for macOS 发布后迅速爆炸。一方面,我观察到如 MacStories 这样的老牌站点只是在吃 iOS 的老本,几乎没有在 macOS 上开辟什么新天地;另一方面,各种扒视频、扒图片的动作甚嚣尘上,比如 RoutineHub 的年度十佳中居然有七个是下载类动作。这些动作本身无可非议,但如果只有这些玩意儿,那就说明一个社区太萧条、太单一了。

在这样的背景下,在本就格外萧条的中文圈中遇到 Se7en,我倍感荣幸。他有很强的自动化技术,能够玩转文件操作类模块、Shell 脚本模块以及 AppleScript 模块,并且都切切实实用在生活中:下载视频,制作漫画,批量处理工作文件……因此,我邀请他来写几篇文章,讲讲他如何使用 Shortcuts——尤其是 Shortcuts for macOS。

另外,还有一点关于自动化普及的私心。我自己写过近千个的自动化动作,深知没有任何一款工具能够满足所有人,因此只能尽可能提供可移植的动作,然后在文章中反复唠叨:您可以把它移植到自己喜欢的工具中……这只是自我安慰罢了,因为有能力移植的人根本不用我提,而一头雾水的读者仍然不知所措。幸而在所有工具中,Shortcuts 或许是学习自动化移植的最佳途径,不用花一分钱也能用上各种脚本模块,因此我一直期待有人能够说清楚其进阶用法,让读者有机会把眼馋已久的 LaunchBar、Alfred 或 Keyboard Maestro 动作移植到 Shortcuts 上。

——Minja

日常使用电脑的过程中,有许多针对文件名的重复性操作,可以使用自动化流程来完成。本文将介绍两个我常用的 Shortcuts 快捷指令,供各位参考。

一键批量隐藏或显示文件扩展名

我个人习惯于将文件扩展名隐藏,这将带来如下好处:1

  1. 减少信息干扰,使窗口内容更为简洁,同时节省屏幕空间;
  2. 对文件重命名时,移动光标时可以更加「无脑」,不必担心误操作而导致文件扩展名被修改或删除。

根据 Apple 官网描述,在 Finder 偏好设置中,若取消选择「显示所有文件扩展名」,那么文件扩展名会根据它们单个的「隐藏扩展名」设置而显示或隐藏。这就导致需要逐一打开文件的「显示简介」窗口,对文件的「隐藏扩展名」属性进行勾选,才能将文件扩展名隐藏,其繁琐程度不言而喻。好在 Finder 提供了相应的 AppleScript 接口。

Hide Filename Extension.shortcut 快捷指令下载

Alt text
一键批量隐藏文件扩展名示例

将 Finder 偏好设置中「显示所有文件扩展名」选项取消选中后,安装上述快捷指令。在 Finder 中选中文件,单击 Quick Actions 快速操作工具栏中的快捷指令图标,即可隐藏选中文件的扩展名。

Alt text
AppleScript 代码

若读者有着完全相反的需求,希望显示选中文件的扩展名,操作也十分简单,将上图代码中红框内的 true 修改为 false 后保存即可。

甚至可以利用快捷指令的 Choose from menu 从菜单中选取 模块来增加一个功能选项,每次运行时弹出窗口进行选择,是将文件扩展名显示出来还是隐藏。我在上文中提供下载的快捷指令并未包含此功能选项,读者可以自行摸索尝试添加此功能。

Alt text
选择菜单

一键批量为文件名添加时间标签

我个人在工作过程中习惯于将文件修改并保存后,立刻在文件名后面加上时间标签。例如 文档五 2022-12-31-17-05,代表着在 2022 年 12 月 31 日 17 点 05 分对文档五进行了修改。这样做的好处在于:

  1. 可以在本机实现基础的版本管理;2
  2. 先后将同一文件的多个版本通过聊天软件发送给同事时,不至于出现文档五(1)文档五(1)(1) 等情况,方便同事区分文件。

File Name With Time.shortcut 快捷指令下载

Alt text
一键批量为文件名添加时间标签

该快捷指令同样是选中文件后,在 Quick Actions 快速操作工具栏单击快捷指令图标执行操作。文件是否隐藏扩展名并不会影响快捷指令的执行。3

Alt text
替换原有时间标签

若当前文件名已经包含时间标签,则会以当前的时间替换掉原有的时间标签。

Alt text
时间标签格式

如果读者希望将时间标签改为自己偏好的格式,需要修改上图中图标 2 内的时间标签格式代码,完整的时间标签格式代码可以参考 Unicode 官网的表格

同时需要修改的还有上图中图标 1 处的正则表达式,使其与图标 2 内的时间标签格式相匹配,这样才能确保,对已包含时间标签的文件进行重命名时,新的时间标签能够替换掉原有的时间标签。

上图中图标 1 处的正则表达式 \s[0-9\-]{16}$,表示「匹配字符串末尾的 16 个字符,且字符仅包含阿拉伯数字和连字号 -」。正则表达式的用法,可以在 Mozilla 官网 进行学习。


  1. 在较小的屏幕上,确有隐藏文件拓展名的必要,而且 Finder 中有文件图标,也可以作为区分文件类型的一个视角,不一定要全靠文件拓展名。DEVONthink 默认也隐藏了拓展名。当然,到底要不要,完全在于您个人。
  2. 有两个极端,一种是完全不管不顾、使用“文件修改版(1)定稿(改)(1)(2)(3)”式的标题,一种是使用 git 等专业版本控制工具。而在文件名中加上日期,则处于一个不太花力气而见效快的甜蜜点。
  3. 快速添加日期的工具有很多,包括 Keyboard Maestro(比如这个)和 TextExpander,而 Shortcuts 不仅不用花钱,而且可以直接批量重命名文件,而不单单是输入日期。