Yosemite中“打开”Applescript处理程序的问题

Yosemite中“打开”Applescript处理程序的问题,applescript,osx-yosemite,Applescript,Osx Yosemite,在OSX10.10Yosemite中使用Applescript时,苹果似乎改变了一些默认行为 on open dropped_files display dialog (count of dropped_files) end open 这个非常基本的Applescript突出了这个问题。如果我从Finder中选择一组6个文件,然后拖放到这个脚本的编译版本上,我会得到响应2,然后是响应4。它应该是6。。。但这几乎就像Finder正在将文件解析成更小的组。如果我再这样做,我会得到一个不同的数

在OSX10.10Yosemite中使用Applescript时,苹果似乎改变了一些默认行为

on open dropped_files
   display dialog (count of dropped_files)
end open
这个非常基本的Applescript突出了这个问题。如果我从Finder中选择一组6个文件,然后拖放到这个脚本的编译版本上,我会得到响应2,然后是响应4。它应该是6。。。但这几乎就像Finder正在将文件解析成更小的组。如果我再这样做,我会得到一个不同的数字组合,所以它似乎并不一致


这不是我的应用程序想要的行为,有什么解决方案吗?我从未在旧版本的Applescript中看到过这种行为。

哇,真奇怪。这个变通办法似乎奏效了。我们可以利用属性和在打开处理程序之后自动运行的on-quit处理程序。因此,只需使用Dfile在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

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

xattr -p com.apple.quarantine *
根据隔离/非隔离文件的排序顺序,它将分别为每个组(无论是隔离还是非隔离)执行打开时处理程序:例如,1-隔离、4-非隔离、3-隔离。您会注意到在本例中提交了两组隔离文件,这是因为该特定列表是如何排序并提交给打开的处理程序的

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

sudo xattr -dr com.apple.quarantine *

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

在macdev中讨论了这一点后,我将其作为一个bug提交给了苹果报告20021353。在此期间,仍然可以使用其他解决方案!有些文件被隔离了吗?您可以使用终端“xattr-pcom.apple.quantial/path/to/file”进行检查。非常有趣的建议克里斯!从我的评论来看,这正是正在发生的事情。它将隔离文件作为一个组提交,将非隔离文件作为另一个组提交。相当令人惊讶的行为。使用以下命令删除隔离属性:sudo xattr-dr com.apple.quantial*后,它报告了正确数量的文件。我也更新了错误报告。感谢您的建议!它起作用了,但在重新运行脚本时,它将数字相乘…例如。7,然后14,然后21,当我把相同的文件列表拖到上面时。我不知道为什么它没有将自己重置为零。原来是和隔离有关的,我不明白为什么会把隔离的文件分成几组。它还将按顺序处理这些文件,例如1-已隔离2-未隔离3-未隔离4-已隔离5-未隔离它将在计数中报告为1、2、1、1,因为它在隔离和非隔离之间交替。您需要将dFiles行设置为{}在脚本的末尾将其重置为零。我在其中包括了这一点。也许它在编译脚本上不起作用?