applescript使用简单的“其”查询挂起查找器

时间:2018-04-10 07:22:04

标签: applescript hang finder

我尝试编写一个非常简单的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个元素的大文件夹上运行小时)(在处理大量文件时,你很难写出那种代码......)。

1 个答案:

答案 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获取信息是可取的。