【问题标题】:OSX Associate a shell script with a file extension?OSX 将 shell 脚本与文件扩展名相关联?
【发布时间】:2011-11-03 08:10:42
【问题描述】:

我想将 .exe 文件扩展名与启动 wine 的 shell 脚本相关联。做这个的最好方式是什么?

根据我收集到的信息,我需要创建一个调用 wine 的 AppleScript,但是如何在 AppleScript 中获取输入文件的名称?如果有更好的方法可以做到这一点,请告诉我,但据我所知,这是最好的方法。

【问题讨论】:

    标签: bash shell applescript exe wine


    【解决方案1】:

    您还可以使用 Automator 将自己的 bash、python 或 ruby​​ 脚本包装在“应用程序”中。

    1. 打开 Automator 并选择创建一个应用程序。

    2. 找到“Run Shell Script”动作,双击或拖动到脚本区域。

    3. 选择所需的解释器(bash、其他 shell、python 或 ruby​​)。

    4. 将“传递输入”选项设置为“作为参数”。 (在自动机模型中,应用程序“接收文件和文件夹作为输入”;因此这让您的脚本将文件名视为命令行参数)。

    5. 在编辑区域输入您的 shell 脚本。在 bash 上,使用“$@”作为命令行参数列表(单独引用以保护嵌入的空格)。

    您现在可以保存脚本(它将获得.app 扩展名),并将其移动到应用程序文件夹或其他合理的位置。它可以与文件类型相关联,就像任何其他应用程序一样。

    注意:这适用于 Mountain Lion (10.8);有人可以评论 Automator 能够做到这一点多长时间?

    【讨论】:

    • 它也适用于 Mavericks 10.9,但我无法更改所有文件类型以使用以这种方式创建的应用程序打开。 Finder 抱怨“发生意外错误(错误代码 -50)”。有什么想法吗?
    • 恐怕没有线索。我还没有升级到小牛队。当我有时间处理不可避免的故障(比如这个)时,我会尝试并回到这个线程。
    • 这在 8 年后仍然适用于大苏尔
    【解决方案2】:

    您可以使用 AppleScript 应用程序来执行此操作 - 文件被传递到 open 处理程序,与 droplet 相同,例如:

    on open theFiles
        set arguments to ""
        repeat with anItem in theFiles
            set arguments to arguments & space & (quoted form of POSIX path of anItem)
        end repeat
        do shell script "/path/to/wine" & arguments
    end open
    

    要将特定文档类型与您的应用程序相关联,您首先需要将信息添加到应用程序的信息属性列表 (Info.plist) 中,以告知启动服务它可以处理哪些类型的文档。请参阅 Apple 的 Document-Based Applications Overview(或查看其他应用程序中的设置)。

    【讨论】:

    • 要检查“.exe”扩展名,您应该添加tell application "Finder" to if the name extension of anItem is "exe" then set arguments to arguments & space ...
    猜你喜欢
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    相关资源
    最近更新 更多