通过 AppleScript 从 Finder 中的选择中取消选择文件

Deselecting a file from a selection in Finder via AppleScript

我到处搜索了大约 6 个小时,以找到一种方法来通过 AppleScript 通过 Automator 快速操作从 Finder 中先前 select 编辑的项目数组中删除select 文件项目.我已经看到 deselect 所有项目,我已经看到将项目添加到 selection/list 进行处理,但没有从 selection...

中删除项目

目标:我通常需要处理大量图像并获得主管的批准,然后才能将它们提供给我们的服务器使用。所有这些都包含在一组透明的 PNG 和不透明的 JPG 中。我只需要上传 JPG 文件以供审批。所以,假设我有 30 张图片。其中 15 个是 JPG,其中 15 个是 PNG。我希望能够 select 所有 30 张图像,并删除 select 其中 15 张是 PNG(通过脚本),留下所有 JPG 的 selection。

还有其他方法可以实现此目的,但如果我可以 select 图片,运行 脚本,然后将它们移到上传(网站上传),那将非常有帮助.这似乎是实现最终结果的最快(手动)方式。

我所知道的: selection 属性。通过我的研究,我看到 selection 属性 以少量不同的方式调用,但不确定如何正确操作它。我已经尝试将 selection 转换为字符串并通过检测要从中拆分的单词(如 "Macintosh HD")拆分它,从而允许它们在列表中进行操作,然后可能将它们从 select离子...?我也不确定如何正确地按原样操作 属性...

我还尝试通过 Automator AppleScript 通过 input 使用给定的文件。但是,唉,这仍然导致知道如何从当前 selection 中 remove/deselect 一个文件。

有人知道如何实现吗?

我感谢所有的时间花费和提前信息。谢谢。

尽管 Finder 本身并没有真正取消选择项目,但它有一个 reveal 命令可以显示指定的项目。一种方法是编辑所选项目的列表,然后显示结果。

请注意,所选项目的排序会有所不同,具体取决于它是来自 Automator 操作(按名称排序)还是来自 Finder tell 语句(所选顺序),以及来自多个文件夹的混合项目(如在Automator 工作流程),将导致多个 Finder windows.

以下 Automator Quick Action 示例将从输入项中删除前两项,并在 Finder 中显示其余项 window:

Workflow 在 Finder.app

中接收当前文件或文件夹

运行AppleScript:

   on run {input, parameters}
       set newSelection to input
       if (count input) > 2 then -- guard for following statement(s)
           set newSelection to items 3 thru -1 of input -- or whatever keep/remove criteria
       end if
       tell application "Finder" to reveal newSelection
       return newSelection
   end run

您可以使用两种方法,一种使用纯 AppleScript,另一种使用 Automator 操作。

纯 AppleScript 解决方案是将选择作为文件列表,将 JPG 文件复制到另一个列表,并将选择设置到新列表,如下所示:

set new_selection_list to {}
tell application "Finder"
    set selection_list to selection
    repeat with this_item in selection_list
        if name extension of this_item is "jpg" then
            copy this_item to end of new_selection_list
        end if
    end repeat
    set selection to new_selection_list
end tell

当然,如果您通过 automator 中的 input 变量传递这些文件,您将使用它而不是再次测试选择,但原则仍然有效。

或者,您可以使用 Filter Finder Items 操作设置您的工作流程,如下所示:

我推荐第二种方法。它可能明显更快,并且需要更少的编程。