在Automator中运行applescript

时间:2013-10-14 23:51:43

标签: applescript automator

我需要启动和停止带有自动变速器的小型服务器,但我的知识非常有限。我无法设置文件的路径,我不知道如何停止服务器。

到目前为止,我有这个:

运行

set r to display dialog "Start or stop the NINJAM server ?" buttons {"Stop", "Start"}

if button returned of r is "Start" then

    #tell application "Terminal"
    #   activate

    do shell script "cd \"/Applications/ MUSIC/ Utilities/Audio IP/NINJAM/NINJAM/NinjamOSXServer ./ninjamsrv Server.cfg\""

    #end tell
else

    do shell script "Stop"

end if

结束

任何帮助都是真正的。提前谢谢。

1 个答案:

答案 0 :(得分:0)

注意我在这里使用自己的路径 - 我将ninjam服务器文件夹放在Applications文件夹的顶层。 我不得不创建一个'term'文件,这是一个包含它的文本文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>WindowSettings</key>
    <array>
        <dict>
            <key>ExecutionString</key>
            <string>cd /Applications/NinjamOSXServer/;./ninjamsrv config.cfg</string>
        </dict>
    </array>
</dict>
</plist>

我将其保存为LaunchNinjamSrvr.term并将其放在与ninjamsrvr相同的文件夹中。然后使用的脚本是:

set r to display dialog "Start or stop the NINJAM server ?" buttons {"Stop", "Start"}

if button returned of r is "Start" then
    do shell script "open /Applications/NinjamOSXServer/LaunchNinjamSrvr.term"
else
    do shell script "killall -INT -v ninjamsrv"
end if

[发生在我身上,我应该给出一些解释。直接使用带有“config.cfg”参数的完整路径会使'do shell script'阻塞。分割成两个命令(但仍然使用do shell脚本),就像在.term文件中看到的那样,可以启动ninjamsrv,但会使脚本编辑器(我使用Smile)冻结。所以(大概 - 我不想通过其他方式[脚本应用程序等]测试它)一个问题,以及为什么我使用.term文件。以前你可以从终端的File菜单(我记得)直接保存一个.term文件,但这似乎已经落在了路边。所以,在这一点上,我使用了一个模板,只需将命令粘贴到相应的行中即可。 (但请参阅http://discussions.apple.com/thread/3139585?start=0&tstart=0 - 其中解释了导出终端首选项文件的技术)。我有点懒,新形式是.terminal,而不是.term ......无论如何...... 所以剩下的就是做实际的AS脚本了。 'open'是一个基本的命令行命令,就像在Finder中打开或双击一样。如果由于某种原因您的文件在错误的应用程序中打开或未打开,您可能需要将其映射到Terminal.app(在获取信息窗口中)和/或将扩展名更改为更新的更新'。终奌站'。 killall就像杀人,旨在以各种方式杀死进程。我选择了-INT,因为这基本上就像做一个control-c来中断进程。]