我是一个非常新手和不常见的AppleScript实验者。我已经尝试了几个小时来学习以下任务的各个applescript命令,但我总是遇到错误。或许更善于使用AppleScript的人会发现这项任务变得简单快捷,为此我会非常感激。这是任务:
我希望能够在finder中手动选择文档或文件,然后在该文件上执行以下unix命令。然后我将脚本存储在Finder的“服务”菜单下。 unix命令是:
srm -rfv -m path/filename
在我的尝试中,我假设一个可以打开终端并执行命令的脚本将是可行的方法,但是无法正常工作。感谢任何能为我制作这样一个剧本的优秀程序员。
答案 0 :(得分:2)
我的提示:使用Automator创建此类服务!
echo "$f"
更改为您的命令srm -rfv -m "$f"
从现在开始,如果您在Finder中选择一个文件,您会找到选项"安全删除"在上下文菜单中。
享受,迈克尔/汉堡
答案 1 :(得分:1)
更新:我错过了 OP希望创建与Finder集成的OS X服务。 ShooTerKo's答案显示了如何做到这一点(他的解决方案甚至不需要使用AppleScript)。
这个答案唯一可能有趣的事情是,它演示了AppleScript命令,用于打开文件选择对话框,获取所选文件的POSIX路径并使用它运行shell命令,以及有关使用{执行shell命令的一些常规背景信息{1}}。
尝试以下方法:
do shell script
注意:
没有明确的错误处理;如果您不希望脚本失败,则必须添加错误处理(# Let the user choose a file via an interactive dialog.
set fileChosen to choose file
# Get the file's POSIX path.
set filePath to POSIX path of fileChosen
# Use the path to synthesize a shell command and execute it.
do shell script "echo srm -rfv -m " & quoted form of filePath
)以处理用户取消文件选择和shell命令失败的情况(在这种情况下不太可能)。
shell命令前面有try ... on error ... end try
以执行空运行(请参阅脚本编辑器的结果窗格中的输出);删除它以执行实际删除。
echo
对于确保在shell命令中包含 as-is 非常重要(shell没有扩展(解释)的风险)。
quoted form of
将不会打开终端窗口 - 它只会运行shell命令 hidden 并返回其stdout输出,这通常是您想要的。如果shell命令通过非零退出代码发出故障信号,则会引发错误。
答案 2 :(得分:0)
Craig的评论是相关的,但我只关注脚本本身,而不是shell命令。必须将脚本保存为应用程序,每次在其图标上放置一个或多个文件时,将对每个文件执行shell脚本命令:
QModelIndex index =this->indexAt(event->pos());
this ->setCurrentIndex(index);
仍然要确保在你的shell命令'srm -rfv'中,'v'是必要的,因为这个脚本不会显示任何东西!我不这么认为。我也没有在删除过程中显示错误。你想对错误做什么(比如写保护,......)?