如何在后续AppleScript中引用Automator复制的文件夹以删除空文件夹?
解决Automator工作流中AppleScript指向复制后文件夹的问题
别担心,新手接触Automator和AppleScript难免会有困惑,我来一步步帮你搞定这个需求!
先理清楚你的工作流顺序
首先确保你的Automator应用程序工作流是按以下顺序排列动作的:
- 接收Finder项目:设置为“作为输入”,这样拖拽的文件夹会被捕获
- 复制Finder项目:选择你想要把文件夹复制到的目标位置(比如桌面),这个动作会输出复制完成后的新文件夹,作为后续动作的输入
- 设置文件夹颜色:用Automator自带的“设置文件夹图标颜色”动作(如果是要设置文件夹内部背景色,后面我可以补充,但先聚焦核心需求)
- 运行AppleScript:这就是我们要修改删除空文件夹脚本的地方
调整删除空文件夹的AppleScript
你原来的脚本是指向固定路径的,现在要改成接收Automator传递过来的复制后的文件夹。把下面的代码替换掉你原来的脚本片段:
on run {input, parameters} -- 从Automator的前一步获取复制好的文件夹 tell application "Finder" set copiedFolder to item 1 of input -- 获取这个文件夹下所有层级的子文件夹 set allSubfolders to every folder of entire contents of copiedFolder -- 遍历每个文件夹,删除空的 repeat with aFolder in allSubfolders if (count of items in aFolder) is 0 then delete aFolder end if end repeat end tell -- 返回结果给后续动作(如果有的话) return input end run
关键修改点说明
on run {input, parameters}:这是Automator中AppleScript的标准入口,input变量会自动包含前一个动作(也就是“复制Finder项目”)输出的内容——也就是你刚复制好的文件夹。- 替换固定路径:把原来的
folder "$CopiedFolderHere"换成copiedFolder,这个变量就是从input里提取的新文件夹对象,完美指向你刚复制的目标。 - 遍历删除逻辑:保留了你原来的核心逻辑,只是把目标文件夹换成了动态获取的复制后文件夹。
额外小提示
- 如果你要设置的是文件夹内部的背景颜色(不是标签颜色),可以在“复制Finder项目”之后添加一个额外的AppleScript动作,用这段代码设置:
on run {input, parameters} tell application "Finder" set targetFolder to item 1 of input set background picture of targetFolder to (path to library folder from user domain as string) & "Desktop Pictures:Solid Colors:Blue.png" -- 你可以替换成其他颜色的路径,或者自定义图片路径 end tell return input end run
内容的提问来源于stack exchange,提问作者Ian Lloyd
相关产品推荐
相关产品推荐

