我正在编写一个AppleScript,我想插入一个子程序来删除指定的文件。使用标志我希望控制给定文件是移动到回收站还是永久删除。
实际上我的脚本看起来像这样:
on MyDeleteProc(theFile, allowUndo)
if allowUndo then
tell application "Finder" to delete POSIX file theFile
else
do shell script "rm " & theFile
end if
end MyDeleteProc
现在我想知道这种情况到目前为止是否正确,或者是否有其他Finder命令或我忽略的删除命令参数,以便我能够简化上面的脚本?
答案 0 :(得分:2)
虽然@adayzdone's answer提供了关键指针 - 使用System Events
应用程序的delete
命令来实现永久删除,但确定语法的确切需要反复试验:
警告:此处理程序适用于文件和文件夹 - 定位文件夹,allowUndo
设置为false
因此永久删除该文件夹的整个子树。
on MyDeleteProc(theFile, allowUndo)
if allowUndo then
tell application "Finder" to delete theFile as POSIX file
else
tell application "System Events" to delete alias theFile
end if
end MyDeleteProc
在OS X 10.9.4上,我必须执行以下操作才能完成这项工作:
Finder
上下文:必须将POSIX file theFile
更改为theFile as POSIX file
(后缀形式) - 不要问我原因。System Events
上下文:在提供的POSIX路径中使用“cast”alias
是对我有用的唯一命令形式。也就是说,对原始函数进行一些调整也会使它工作(除非你逐个删除许多文件,性能可能无关紧要):
但请注意,仅使用rm
仅适用于文件 - 如果您想将其扩展到文件夹,请改用rm -rf
- 相同警告重新永久删除整个子树适用。
on MyDeleteProc(theFile, allowUndo)
if allowUndo then
tell application "Finder" to delete theFile as POSIX file
else
do shell script "rm " & quoted form of theFile
end if
end MyDeleteProc
请注意使用quoted form of
,它可以安全地将文件路径传递给shell,正确编码空格等字符。
答案 1 :(得分:1)
您可以使用系统事件永久删除文件。
答案 2 :(得分:0)
finder只显示带有文件说明符的删除,找不到其他选项
像adayzdone一样,你可以使用系统事件永久删除一个项目。
这些屏幕标题来自“Finder”和“系统事件”词典,只需转到AppleScript中的文件菜单,然后选择打开字典。另一个值得关注的好消息是“标准增加”
我希望这可以帮助你:)