问题" On Open"优胜美地的Applescript处理程序

时间:2015-03-03 08:34:22

标签: applescript osx-yosemite

在OSX 10.10(Yosemite)中使用Applescript时,似乎Apple改变了一些默认行为。

on open dropped_files
   display dialog (count of dropped_files)
end open

这个非常基本的Applescript强调了这个问题。如果我从Finder中选择一组6个文件,并放入/删除到此脚本的编译版本,我会得到响应" 2"然后回应" 4"。它应该响应" 6" ...但它几乎就像Finder将文件解析为较小的组一样。如果我再次这样做,我得到一个不同的数字组合,所以它似乎不一致。

这不是我的应用程序所需的行为,任何解决方案的想法?我从未在旧版本的Applescript中看到过这种行为。

2 个答案:

答案 0 :(得分:2)

这种奇怪的效果是由于隔离文件造成的。可以使用以下命令检查隔离文件:

xattr -p com.apple.quarantine *

根据隔离/非隔离文件的排序顺序,它将分别执行" on open"每个组的处理程序(无论是隔离的还是非隔离的):例如,1 - 隔离,4 - 非隔离,3 - 隔离。您会注意到在此示例中提交了两组隔离文件,这是因为该特定列表的排序方式和提交给打开的处理程序。

这种行为相当令人惊讶,我已将其作为错误报告提交给Apple。可以使用以下命令删除隔离属性:

sudo xattr -dr com.apple.quarantine *

显示正确的文件数。另外,请参阅regulus6633上面的Applescript技巧,以获得一个聪明的解决方法。

答案 1 :(得分:1)

哇,这很奇怪。这种解决方法似乎有效。我们可以利用属性和“on quit”处理程序,它在“on open”处理程序之后自动运行。因此,只需使用dFiles在“on quit”处理程序中运行您的普通代码。请记住在最后将dFiles设置为{} dFiles在下次删除文件时将无法正常工作。

property dFiles : {}

on open dropped_files
    set dFiles to dFiles & dropped_files
end open

on quit
    display dialog (count of dFiles)
    set dFiles to {}
    continue quit
end quit