在不打开编辑器的情况下执行applescript


Answers:


19

脚本的保存方式对其在Mac OS X中的运行方式有很大影响。听起来您的脚本只是保存为脚本,这就是每次打开脚本时打开脚本编辑器的原因。

要解决此问题,请在AppleScript编辑器中打开脚本并将其另存为应用程序。那应该是把戏。

步骤是(在编辑器中)

文件>另存为>,然后将文件格式设置为应用程序,然后保存。

连结文字


现在它提示:“按运行即可运行或退出即可退出” ...但是我想这是脚本错误!谢谢
OscarRyz

1
选中“运行”复选框可能会阻止提示出现。
Bruce McLeod

我的理解是“仅运行”复选框不允许以后编辑脚本。
jtbandes

@jtbandes ahhhh ...很有道理
Bruce McLeod

2
请注意,在优胜美地中,当前方法是使用文件->导出。最新版本的AppleScript编辑器中没有“另存为”对话框。
anon58192932

7

保存脚本时,可以从“文件格式”下拉列表中选择“应用程序”。然后您将能够运行它,并且仍然可以将其拖动到脚本编辑器以打开脚本;或者,您可以选择仅运行,这样就不会保存可编辑的版本。

或者,您可以osascript在Terminal中使用命令as osascript /path/to/scriptosascript -e "a short script here"


1

您也可以将脚本放在〜/ Library / Scripts / Finder /文件夹中,然后直接从“脚本”菜单运行它。


1

在macOS High Sierra 10.13下,没有文件/另存为。

您必须使用文件/导出/文件格式:应用程序 文件导出 文件格式


0

另一种方法是在Automator中创建服务,该服务使用osascript命令在Finder中运行.scpt。

(我未使用英语的Automator,因此措辞可能不准确)

  1. 启动自动器
  2. 文件>新建,然后选择服务
  3. 在“服务接受:”中选择“文件或文件夹”
  4. 在“位置:”中选择“ Finder.app”
  5. 搜索“运行AppleScript”并将项目拖到右侧
  6. 在“运行AppleScript”框中,输入以下代码:

    on run {input, parameters}
        tell application "Finder"
            --get the selected file
            set selectedItem to (item 1 of (get selection))
    
            --get location info (folder:file format)
            set fileLocation to (selectedItem as alias) as string
    
            --replace : with / with subroutine
            set the semifinal to my replace_chars(fileLocation, ":", "/")
    
            --remove Macintosh HD with subroutine
            set the theFinal to my replace_chars(semifinal, "Macintosh HD", "")
        end tell
        do shell script "osascript " & "\"" & theFinal & "\""
        return input
    end run
    
    on replace_chars(this_text, search_string, replacement_string)
        set AppleScript's text item delimiters to the search_string
        set the item_list to every text item of this_text
        set AppleScript's text item delimiters to the replacement_string
        set this_text to the item_list as string
        set AppleScript's text item delimiters to ""
        return this_text
    end replace_chars
    
  7. “文件”>“保存”,并命名为“运行AppleScript”

  8. 现在,您可以在Finder中右键单击.scpt文件,然后选择“运行AppleScript”,然后查看脚本已执行。

参考:子例程的源-AppleScript:基本子例程


我看到您的AppleScript代码有问题。1.在将.scpt文件传递给您之前,您没有错误处理或代码来验证选择的内容是什么。osascript如果在Finder中选择了多个.scpt文件,则没有进行编码以进行处理。2.当下面的单行代码替换您添加到“运行AppleScript”操作中的所有内容时,绝对不需要进行这种编码。do shell script "osascript " & quoted form of POSIX path of item 1 of input这是一个替换当前AppleScript代码中所有内容的最小示例:paste.ee/p/XngKA
user3439894

在最小的示例中,if可以使用else显示显示所选文件不是.scpt文件的消息的子句扩展语句块。这样,用户就不会想知道为什么如果在运行服务时没有看到自己不小心选择了错误的文件类型,为什么什么也没发生。
user3439894
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.