通过终端(bash)打开脚本编辑器并保存文件

通过终端(bash)打开脚本编辑器并保存文件,bash,macos,applescript,Bash,Macos,Applescript,我想让脚本编辑器打开一个.scpt文件,然后制作一个副本并将其保存为应用程序。我想自动完成这一切,因为我不想单击“复制并保存”,然后键入所有内容。 基本上就是我想做的 在脚本编辑器中打开xyz.scpt 复制一份 将文件另存为xyz.app(应另存为应用程序) 我想我应该使用applescript,但如果有更好的方法,请告诉我。 目前,前两个步骤似乎足够简单 open xyz.scpt osascript -e 'tell application "Script Editor" to acti

我想让脚本编辑器打开一个.scpt文件,然后制作一个副本并将其保存为应用程序。我想自动完成这一切,因为我不想单击“复制并保存”,然后键入所有内容。
基本上就是我想做的

  • 在脚本编辑器中打开xyz.scpt
  • 复制一份
  • 将文件另存为xyz.app(应另存为应用程序)
  • 我想我应该使用applescript,但如果有更好的方法,请告诉我。 目前,前两个步骤似乎足够简单

    open xyz.scpt 
    osascript -e 'tell application "Script Editor" to activate' #Maybe redundant
    osascript -e 'tell application "System Events" keystroke "," using {command down,shift down}'
    osascript -e 'keystroke "s" using {command down}'
    
    在这之后,我不知道如何继续。如何使其将名称从“xyz copy”更改为“xyz”,并将其另存为应用程序


    请注意,任何解决方案都可以。该解决方案不必是AppleScript解决方案,它可以是任何类型的解决方案。

    在脚本编辑器中,打开xyz.scpt后,使用“另存为”功能,输入应用程序和新文件路径。以下是文档(在脚本编辑器库窗口中):

    保存 v:保存一个对象。 保存说明符:命令的对象

    [astext]:保存数据的文件类型。使用以下字符串之一:“脚本”、“脚本包”、“应用程序”、“文本”

    [in别名]:保存对象的文件

    [仅运行布尔值]:脚本是否应保存为仅运行?如果是,您将无法再次编辑脚本的内容。默认设置不是仅保存为运行。(适用于除“文本”之外的所有脚本类型)

    [启动屏幕布尔值]:是否显示启动屏幕?默认情况下,不显示启动屏幕。(仅适用于保存为“应用程序”的脚本)

    [保持打开布尔值]:应用程序启动后是否应保持打开状态?默认设置是不保持打开状态。(仅适用于保存为“应用程序”的脚本)

    尽量避免GUI脚本编写(击键,…)。如果应用程序是脚本命令,请始终首先查看。它更快、更安全。

    复制自:

    有一种命令行机制:

    osacompile -o MyScript.app MyScript.scpt
    

    将问题标记为跨站点重复是不可能的。因此,在这里作为一个单独的答案张贴。向上投票人,请在给出的行向上投票原始答案。:-)

    “复制”是什么意思?它只是一个简单的副本,就像
    cp
    那样吗?或者脚本编辑器会修改任何内部路径等吗?@anishsane只是一个像cpSo这样的简单副本,为什么要在编辑器中打开并保存它呢?为什么不仅仅是
    cp
    ?我需要将其保存为应用程序,而不是脚本或.scptSo的当前格式。因此,它不仅仅是cp:-)无论如何。。。您可能需要考虑使用命令行方式将脚本复制为应用程序的可能性。UI机制(1)速度慢,(2)难以通过ssh-X运行。再次感谢@pbell的帮助。因此,为了在终端中确认,我应该在“xyz”中键入
    osascript-e“另存为应用程序”
    当我尝试上述脚本时,它会给我以下错误
    执行错误:«script»不理解“save”消息。(-1708)
    在Applescript中保存的确切语法是:将前端文档另存为文件“Users:myUser:myFolder:Test.app”中的“application”。您必须在osascript命令中包含该命令。然而,当我进行测试时,我发现脚本编辑器有时需要在“compile”指令之前确保脚本在保存为应用程序之前被重新编译。