Yosemite 中 "On Open" Applescript 处理程序的问题
Issues with "On Open" Applescript handler in Yosemite
在 OSX 10.10 (Yosemite) 中使用 Applescript 时,Apple 似乎更改了一些默认行为。
on open dropped_files
display dialog (count of dropped_files)
end open
这个非常基本的 Applescript 突出了问题。如果我从 Finder select 一组 6 个文件,并 drop/drop 到这个脚本的编译版本,我得到响应“2”,然后是响应“4”。它应该响应“6”......但它几乎就像 Finder 正在将文件解析为更小的组。如果我再次这样做,我会得到不同的数字组合,所以它似乎不一致。
这不是我的应用程序所期望的行为,有什么解决方案吗?我从未在旧版本的 Applescript 中看到过这种行为。
哇,真奇怪。此解决方法似乎有效。我们可以利用属性和 "on quit" 处理程序,它在 "on open" 处理程序之后自动 运行。因此,只需 运行 您在 "on quit" 处理程序中使用 dFiles 的正常代码。请记住在最后将 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 *
根据 quarantined/non-quarantined 文件的排序顺序,它将分别为每个组(隔离或非隔离)执行 "on open" 处理程序:例如,1 - 隔离,4 - 未隔离,3 - 隔离。您会注意到在此示例中提交了两组隔离文件,这是因为该特定列表是如何排序并提交给打开处理程序的。
这种行为相当令人惊讶,我已将其作为错误报告提交给 Apple。可以使用此命令删除隔离属性:
sudo xattr -dr com.apple.quarantine *
显示正确的文件数。另外,请参阅上面 regulus6633 的 Applescript 技巧以获得巧妙的解决方法。
在 OSX 10.10 (Yosemite) 中使用 Applescript 时,Apple 似乎更改了一些默认行为。
on open dropped_files
display dialog (count of dropped_files)
end open
这个非常基本的 Applescript 突出了问题。如果我从 Finder select 一组 6 个文件,并 drop/drop 到这个脚本的编译版本,我得到响应“2”,然后是响应“4”。它应该响应“6”......但它几乎就像 Finder 正在将文件解析为更小的组。如果我再次这样做,我会得到不同的数字组合,所以它似乎不一致。
这不是我的应用程序所期望的行为,有什么解决方案吗?我从未在旧版本的 Applescript 中看到过这种行为。
哇,真奇怪。此解决方法似乎有效。我们可以利用属性和 "on quit" 处理程序,它在 "on open" 处理程序之后自动 运行。因此,只需 运行 您在 "on quit" 处理程序中使用 dFiles 的正常代码。请记住在最后将 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 *
根据 quarantined/non-quarantined 文件的排序顺序,它将分别为每个组(隔离或非隔离)执行 "on open" 处理程序:例如,1 - 隔离,4 - 未隔离,3 - 隔离。您会注意到在此示例中提交了两组隔离文件,这是因为该特定列表是如何排序并提交给打开处理程序的。
这种行为相当令人惊讶,我已将其作为错误报告提交给 Apple。可以使用此命令删除隔离属性:
sudo xattr -dr com.apple.quarantine *
显示正确的文件数。另外,请参阅上面 regulus6633 的 Applescript 技巧以获得巧妙的解决方法。