编注:
在上周我们试推行了「你工作中的自动化定制」项目,收到了部分读者提出的需求。Power+ 小组随后与每个提出需求的读者都进行了联系。在进一步明确对方需求之后,首先解决其问题,进而选取其中有借鉴意义的场景写成文章,以供其他读者参考。
我们深知 Power+ 的读者中有不少 Windows 用户,在未来我们也会尽量多地增加 Windows 的内容,但很遗憾本文也是用的 macOS 上的 Automator 作为演示。不过这类内容重点不只是局限于某个系统的做法,而是它的思路。
读者 @Charlsy 问:
我是一名(准)设计师,最近遇到的一个问题就是在每一次开始做一个新的项目时,总是要重复新建几个同样名字的新文件夹来储存不同性质的文件,从而进行管理和归类(01-Layout, 02-Asset, 03-Resource, etc.),这个时候就觉得如果能够有一个一键新建文件夹模板就好了。
相信在文件整理中,文件夹的创建总是一件让人头疼的事。其实这种重复劳动很多的工作,非常适合教给自动化工具来做。
这篇文章中,我将用 macOS 自带的 Automator 来解决文件夹的创建问题;同时,我们将通过这个例子了解 Automator 中输入输出和变量的概念。
动作概览
我们先直接来看看最后的效果演示。只需要双击这个 Automator App,就能在桌面上新建一个文件夹,其中包含了 01-Layout、02-Asset、03-Resource 三个子文件夹。
用 Automator 打开这个 App,就能够看到其中的步骤。你可以根据自己的需求,把其中 01-Layout 等文件夹的名字改成自己需要的。你也可以减少或增加「新建文件夹」步骤的数量(直接复制粘贴就能增加,按删除键就能减少),来自由增减子文件夹的数量。
这是个简单的 Automator,步骤不多,但涉及了两个关键的概念:
输入输出,创建子文件夹的步骤忽略了上一步输出的结果,避免了前一步结果带来的影响。
变量,可以把几乎任何文本、图片和文件设为变量,在 Automator 流程中轻松调用。
了解整个 Automator 的大致原理和使用方式后,我们接下来重点关注这两个概念。
关键概念解析
为什么说输入输出和变量是 Automator 中的关键概念?在此介绍它俩之前,我们可以先简单看一下 Automator 最基本的工作方式是怎样的:
如上图所示,Automator 通过一系列流水线一样的步骤,把输入的文本、链接或者文件等内容进行一步一步的处理,上一步处理好了就交给后续的步骤,直到最后导出一个或一批成品。
但是这样一根肠子通到底的线性工作方式在 @Charlsy 的工作场景中是无法解决问题的,因为创建完第一个子文件夹后,你如果直接在后面接上「新建文件夹」步骤,就会发现其他的文件夹是一个套一个出现在子文件夹中,这显然不符合我们的要求。
解决方式就是通过调整输入输出、设置和调用变量,来突破原先线性的工作流。
输入和输出
Automator 中的每一步都可以有输入和输出,就像工厂中的车间,既能够接收上游的原料来开工,也可以拿出加工好的产品(除非这个车间出了问题)交给下一个车间。
在任意两步之间,你都可以看到如下图的连接部分(默认会有),这表示下一步接受了上一步的输出。
在创建文件夹的 Automator 中,第一步「新建文件夹」的输入不是必需的,因为它不处理任何文件,直接就能在桌面创建新文件夹;而它的输出,则是刚刚建好的文件夹 设计。
不过在这个 Automator 中,我们没有接着继续创建文件夹,而是把上一步的 设计 输出到「设定变量的值」这一步中(下一节再讲)。重点请看最后的三个「新建文件夹」步骤,它们都是没有输入的(和上一步没有连接):
这就避免了创建文件夹的步骤被上一步影响而出现「一个套一个」的错误结果。那没有了上一步的结果,如何指定新文件夹创建的位置呢?接下来就该变量 出场了。
设置和调用变量
变量可以视为各个车间之间的「直通车」,只要是前面任一步骤出现过的、甚至电脑中的任何文本或文件,都可以设为变量,一个 Automator 步骤不用傻傻上一步给它输入「原料」,直接调用变量就能对后者进行处理。
设置变量的方法很简单,在任何一步后面接上「设定变量的值」,就可以把这一步的输出设成变量,加下来的步骤不一定要接在它下面也能使用它输出的结果。
我们的这个 Automator 动作中,第一步「新建文件夹」输出的结果是 设计 文件夹所在的路径,我们设置的变量 path(路径)就代表了这一文件夹在电脑中的位置。
接下来的事就好办了,在每一个创建子文件夹的步骤中,都把「位置」指定为「path」就行。变量的运用很简单,首先点击下图所示的按钮,打开变量界面,所有已经设定过的变量都会出现在这里:
接着把变量拖到需要使用的地方,就能调用变量了:
至此,我们就突破了线性工作流的限制,学会了在 Automator 中灵活运用输入输出与变量。