我尝试编写一个非常简单的Automator服务来选择与当前突出显示的文件具有相同扩展名的所有文件。它调用了我写的那样的Applescript脚本(灵感来自实际上的一些代码):
on run {input, parameters}
try
set anItem to first item of input
tell (info for anItem) to set theExt to name extension
tell application "Finder"
set parentFolder to (parent of anItem as alias)
select (every document file of parentFolder whose (name extension is theExt))
end tell
end try
end run
使用适当的变量parentFolder和theExt运行到“select ...”行。然后我得到一个沙滩球。 Finder多年来一直停留在100%,我必须杀死它并重新启动。
编辑: 我刚刚意识到如果文件夹包含几十个元素,它实际上运行正常。它挂起(甚至允许在大约10000个元素的大文件夹上运行小时)(在处理大量文件时,你很难写出那种代码......)。
答案 0 :(得分:0)
使用where
子句过滤项目时,Finder非常慢。
这是使用System Events
的替代方法,它更快
on run {input, parameters}
try
set anItem to first item of input
tell application "System Events"
set theExt to name extension of anItem
set parentFolder to path of container of anItem
set itemsToSelect to (path of files of folder parentFolder whose name extension is theExt)
end tell
tell application "Finder"
open parentFolder
select itemsToSelect
end tell
end try
end run
注意:info for
已弃用很长时间了。直接从System Events
获取信息是可取的。