Answers:
是的,Automator是此处的最佳选择。要创建服务,请按照下列步骤操作:
打开Automator,然后选择服务:
搜索“ applescript”,然后将操作拖动到右窗格中:
更改Service receives selected text
为Service receives no input
,使其始终显示在“服务”菜单中:
替换(* Your script goes here *)
为:
do shell script "/usr/bin/osascript /path/to/your/script.scpt"
如果您希望执行现有.scpt
文件。请注意,osascript无法像显示对话框窗口那样处理用户交互:
要克服此限制,请使用此替代方法,或仅将其替换(* Your script goes here *)
为脚本的内容。
保存:
如果需要,可以为新服务分配快捷方式。在Finder(或任何打开的应用程序)中选择“服务”>“服务首选项”:
分配一个不太常见的快捷方式:
现在,您可以通过上一步中分配的快捷方式从任何应用程序访问您的服务:
如果您想摆脱该服务~/Library/Services
,请删除该服务并清空垃圾箱:
osascript
,如其他答案中所述。
osascript
在Automator中使用它来运行.scpt
文件,一个限制和两个解决方法。
osascript
还要再花4秒钟来执行脚本,但是Automator并不是造成延迟的原因,这是我所关心的。您可能要调试osascript
,请参阅opensourcehacker.com/2011/12/02/…和stackoverflow.com/questions/31045575/…–
在脚本中,添加一个on run
参数:
on run
-- do whatever the script does
end run
然后,可以通过以下osascript
命令使用Automator的“运行Shell脚本”操作:
osascript /path/to/script.scpt
osascript
是在外壳中执行AppleScript的命令。您需要脚本中的行以允许在AppleScript编辑器之外执行脚本。
on run {input, arguments}
形式,但是即使在Automator中,您也可以删除运行处理程序。
我不建议创建Automator服务来为脚本分配快捷方式。10.7和10.8中存在一个错误,其中直到您将鼠标悬停在菜单栏中的服务菜单上时,Automator服务的键盘快捷键才会始终起作用。在运行服务之前,还有一个相对较长的延迟(可能是0.1到1 s)。
有关将键盘快捷键分配给脚本的其他方法,请参见此答案。我自己使用FastScripts和Alfred。
您可以使用这样的简单自动化服务来运行现有脚本。并从键盘快捷方式中正常分配快捷方式。请记住,某些应用程序在选择快捷方式之前可能需要重新启动。
例。
sayHello脚本:
say "hello"
自动化服务:
在此示例中使用:
该操作是运行Shell脚本 该代码仅使用unix命令osascript和文件路径。 传递输入可以是stdn或参数
那就没什么特别的需要做的脚本了。
有关osascript命令的更多详细信息,请查看其手册页。手册页提供了另一个示例,您可以在其中向脚本传递参数。