通过 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 操作设置您的工作流程,如下所示:
我推荐第二种方法。它可能明显更快,并且需要更少的编程。
我到处搜索了大约 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 操作设置您的工作流程,如下所示:
我推荐第二种方法。它可能明显更快,并且需要更少的编程。