2015-10-15 53 views
1

我是一个非常新手而且不常见的applescript实验者。我已经尝试了几个小时来学习以下任务的单个applescript命令,但我总是遇到错误。也许更熟悉applescript的人会发现这项任务简单快捷,为此我将非常感激。这是任务:对Finder中选定的文件执行shell命令

我希望能够在查找器中手动选择文档或文件,然后在该文件上执行以下unix命令。然后,我会将该脚本存储在Finder的“服务”菜单下。 UNIX命令是:

srm -rfv -m path/filename 

在我的努力,我认为这将打开终端,并执行该命令将要走的路,但就是无法得到任何工作的脚本。预先感谢任何能够为我推出这样的脚本的优秀程序员。

+0

使用v标志指示srm是详细的。你有计划返回文字吗? –

+0

总结:您正在创建一个与Finder集成的OS X服务:安全删除文件的shell命令应该应用于Finder中当前选定的项目。 您可以在Automator中创建这样的服务,甚至不需要涉及AppleScript,因为[ShooTerKo's](http://stackoverflow.com/a/33172126/45375)有用的答案将演示。 – mklement0

回答

0

Craig的评论是相关的,但我只关注脚本本身,而不是shell命令。脚本波纹管必须保存为应用程序,并在每次它的图标拖放1个或多个文件时,shell脚本命令将每个文件执行:

on open myFiles 
repeat with aFile in myFiles -- repeat loop in case you drop more than 1 file on the icon script 
try 
do shell script "srm -rfv -m " & (quoted form of POSIX path of aFile) 
end try 
end repeat 
end open 

还是确保在你的shell命令“SRM - rvv','v'是必要的,因为这个脚本不会显示任何东西!我不这么认为。也删除过程中我没有显示错误。你想做什么与错误(如写保护,...)?

1

更新:我错过了OP想要创建一个与Finder集成的OS X服务。 ShooTerKo's答案显示如何做到这一点(他的解决方案甚至不需要使用AppleScript)。

这个答案唯一可能有趣的地方是它演示了AppleScript命令打开文件选择对话框,获取所选文件的POSIX路径并运行shell命令,以及一些关于执行shell命令的一般背景信息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 

注:

  • 有没有明确的错误处理;如果您不希望脚本失败,则必须添加错误处理(try ... on error ... end try)以处理用户取消文件选择和shell命令失败的情况(在这种情况下不太可能)。

  • shell命令前加echo以执行空运行(请参阅其在脚本编辑器的结果窗格中的输出);删除它来执行实际删除。

  • quoted form of是确保的字符串值被包括原样在一个外壳命令(由shell没有膨胀(以危险))重要。

  • do shell script将不会打开一个终端窗口 - 它只会隐藏运行 shell命令并返回它的标准输出的输出,这通常是你想要的。如果shell命令通过非零退出代码发出失败信号,则会引发错误。

+1

好答案 - 请投我的票。如果OP想让事情变得更加灵活一些,可以看一下@jweaks优秀的答案http://stackoverflow.com/a/33088853/2836621,它允许脚本通过启动和选择文件来运行,或者通过在Finder中选择一堆文件并将其放到脚本中。 –

+0

谢谢,@MarkSetchell。链接的脚本很有趣,但是在重读这个问题时,我注意到OP真正需要的是一个与Finder直接集成的OSX服务,这就是ShooTerKo的答案所描述的,所以我在那里指出了我的答案。 – mklement0

+0

谢谢大家的宝贵意见。我将逐个尝试这些建议,开始理解所有相关的弱点和好处。 – Arty14

2

我的提示:使用Automator创建这样的服务!

  1. 在Automator中
  2. 创建新的服务
  3. 选择“文件&文件夹”作为输入,“发现者”
  4. 添加“运行shell脚本”
  5. 选择“作为参数”输入
  6. 变化echo "$f"你的指挥srm -rfv -m "$f"
  7. 另存为 “安全删除”

从现在开始,如果您在Finder中选择了一个文件,您将在上下文菜单中找到“安全删除”选项。

Enjoy,Michael/Hamburg

+0

干得好;听起来像这正是OP正在寻找的东西。 – mklement0

+0

Michael - 您的回复非常有帮助。我很感谢简单性和您的建议,我可能会将该命令保存在Finder上下文菜单中而不是服务菜单中。我很感谢你的帮助......谢谢! – Arty14

+0

@ Arty14:实际上,该命令将显示在_both_位置。 – mklement0