MacBook 的硬盘容量之昂贵,让无数人吐槽,也让囊中羞涩的我们在无奈之下选择了小容量的版本。然而,小容量却更是无奈的开始:安装个大型游戏,硬盘空间告急;下载个电影,硬盘空间告急……。我们只好拿出移动硬盘,隔两天就向其中转移一些文件。这种经常性的「体力活」真不是什么让人愉悦的事情。

这种时候,Keyboard Maestro 这款自动化神器就该派上用场了。

首先,贴出任务(Macro)过程图

AutoMove
AutoMove

其原理为:
(1) 使用 Mounted Volume Trigger 触发器监控移动硬盘的插入动作。
(2) 使用 For Each Path in Folder 动作遍历源文件夹。
(3) 使用 Move or Rename a File 动作对源文件夹中的每个文件(夹)执行移动动作。

注意:移动文件时,悄无声息,不会出现进度窗口。所以,在移动动作前后,加上提醒动作(Notification)。移动前,提醒开始;移动后,提醒完成。如果正在向移动硬盘中转移文件,那么尝试弹出硬盘会出现「无法弹出」错误的弹窗。你也可以查看 macOS 的通知中心,查看是否存在「Moving Complete」的完成提醒。

为了方便,将该任务导出后的 AutoMove.kmmacros 文件内容列于下方。

你需要做的是:

  1. 复制下面的代码保存为 TXT 文本文件
  2. 重命名为 AutoMove.kmmacros 文件
  3. 双击导入 Keyboard Maestro 中
  4. 根据你的实际情况,修改上图中的 1、2、3 等三处内容
  5. 点击右上角的大叉 以启用该任务
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>Activate</key>
        <string>Normal</string>
        <key>CreationDate</key>
        <real>509815547.960127</real>
        <key>Macros</key>
        <array>
            <dict>
                <key>Actions</key>
                <array>
                    <dict>
                        <key>Actions</key>
                        <array>
                            <dict>
                                <key>MacroActionType</key>
                                <string>Notification</string>
                                <key>SoundName</key>
                                <string></string>
                                <key>Subtitle</key>
                                <string></string>
                                <key>Text</key>
                                <string>Moving Begin: %Variable%AutoMove_FilePath%</string>
                                <key>Title</key>
                                <string>%ExecutingMacro%</string>
                            </dict>
                            <dict>
                                <key>Destination</key>
                                <string>/Volumes/移动硬盘分区名称/目标文件夹</string>
                                <key>MacroActionType</key>
                                <string>File</string>
                                <key>Operation</key>
                                <string>Move</string>
                                <key>Source</key>
                                <string>%Variable%AutoMove_FilePath%</string>
                            </dict>
                            <dict>
                                <key>MacroActionType</key>
                                <string>Notification</string>
                                <key>SoundName</key>
                                <string></string>
                                <key>Subtitle</key>
                                <string></string>
                                <key>Text</key>
                                <string>Moving Complete: %Variable%AutoMove_FilePath%</string>
                                <key>Title</key>
                                <string>%ExecutingMacro%</string>
                            </dict>
                        </array>
                        <key>Collections</key>
                        <dict>
                            <key>CollectionList</key>
                            <array>
                                <dict>
                                    <key>CollectionType</key>
                                    <string>Files</string>
                                    <key>Path</key>
                                    <string>源文件夹</string>
                                    <key>Reverse</key>
                                    <true/>
                                    <key>SortOrder</key>
                                    <string>Alphabetical</string>
                                </dict>
                            </array>
                        </dict>
                        <key>MacroActionType</key>
                        <string>For</string>
                        <key>TimeOutAbortsMacro</key>
                        <true/>
                        <key>Variable</key>
                        <string>AutoMove_FilePath</string>
                    </dict>
                </array>
                <key>CreationDate</key>
                <real>513531793.15557897</real>
                <key>ModificationDate</key>
                <real>540910961.17178202</real>
                <key>Name</key>
                <string>AutoMove</string>
                <key>Triggers</key>
                <array>
                    <dict>
                        <key>MacroTriggerType</key>
                        <string>Volume</string>
                        <key>Mounted</key>
                        <true/>
                        <key>Name</key>
                        <string>移动硬盘分区名称</string>
                        <key>TargetType</key>
                        <string>Named</string>
                    </dict>
                </array>
                <key>UID</key>
                <string>3C9844FD-4072-445C-BE8D-6BF4D1B31A0F</string>
            </dict>
        </array>
        <key>Name</key>
        <string>-- Temp --</string>
        <key>ToggleMacroUID</key>
        <string>C75D69EF-051D-443D-B6AC-02B462E63FCC</string>
        <key>UID</key>
        <string>F9C946DC-CDFB-4F58-898F-6134852A374A</string>
    </dict>
</array>
</plist>

附上 Keyboard Maestro 的入门文章:

8
8