在我的应用程序中,我喜欢让 OSX Finder 复制文件或文件夹。
(注意:我有充分的理由使用 Finder 而不是使用 shell cmds、NSWorkspace 或其他方式,因此不需要在这个方向上提出建议。)
我目前依靠 Applescript 要求 Finder 执行复制操作。这是一个用于测试的示例脚本:
tell application "Finder"
try
copy file POSIX file "/etc/bashrc" to folder POSIX file "/private/tmp"
-- alternative with same behavior:
--duplicate POSIX file "/etc/bashrc" to POSIX file "/private/tmp"
on error errmesg number errn
display dialog "Error thrown: " & errmesg
end try
end tell
现在的问题是:如果目标项已经存在,脚本会抛出错误并取消复制操作。
但是,我宁愿让 Finder 显示“项目存在”对话框,它会在 Finder 中以交互方式执行此类复制操作时显示,如下所示:
现在,事情是这样的: 如果我从 3rd 方应用程序 Script Debugger 运行此脚本,则会出现此对话框!
因此,显然有一种方法可以让 Finder 显示对话框而不是抛出异常。但是怎么做?谁知道这其中的秘密?