将脚本添加到MacOS Finder上下文菜单

Pet*_*uza 11 macos bash applescript finder automator

我想在finder上下文菜单中添加一个选项,调用hg add %1%1是finder中所选文件的完整路径.
当然,我可以想到更多有用的案例,添加到上下文菜单中.
有没有一种简单的方法可以做到这一点,不涉及安装任何第三方软件或编译语言编码和构建二进制插件?
就像用脚本编辑器创建脚本并将其放入/Library/Contextual Menu Items/

stu*_*eek 20

自@ khachik的正确答案以来,Snow Leopard/10.6 +的步骤已经改变.为了确保清楚,这里是步骤:

  • 打开Automator
  • 创建一个新的 Service
  • 设置在顶部顶部的两个下拉菜单,以"服务接收选择files or foldersFinder.app"
  • 将Pass输入设置为 as arguments
  • 写下你的脚本(见下文).
  • 保存并选择服务名称

您的Automator窗口应如下所示:截图

您现在可以在Finder中选择多个文件,然后从"服务"子菜单中执行服务.

对于您的脚本,我认为您需要以下内容.这会更改每个参数的目录,然后添加它.我正在使用for循环,因为Finder允许您选择不同文件夹中的多个文件(可能位于不同的存储库中).

for f in "$@"
do
    cd $(dirname $f); hg add $f 
done
Run Code Online (Sandbox Code Playgroud)

如果您认为它们都在同一个存储库中,您可以这样做:

cd $(dirname $1); hg add $@
Run Code Online (Sandbox Code Playgroud)

  • Automator在一个环境中运行脚本,该环境设置路径到/ etc/paths中定义的路径(也许还有别的东西)但它不会调用你的〜/ .bash_profile --->所以万一你需要一些路径定义要从Automator脚本中找到要执行的脚本/程序,您必须使用完整路径或添加"source~/.bash_profile"(不带引号)作为脚本的第一行 (2认同)

kha*_*hik 15

打开Automator,创建自定义工作流程.从Library选择Utilites,然后拖放Run shell script到工作流程.设置Pass inputAs arguments.写在你的脚本中:hg add $1.然后File menu->Save as a Plugin,指定名称,选择plugin for Finder,Save.右键单击该文件,选择More->Autamator-><PLUGIN_NAME>.

  • 要在Snow Leopard中使用它,您需要在启动automator时执行New - > Service,_not_ New - > Workflow.然后,您可以使用"服务接收选定____ in ____"控件将服务绑定到特定应用程序中的特定上下文菜单.其余的工作与此答案相同. (3认同)

Zyg*_*unt 2

是的,我知道这是第三方软件 - 但为了更全面的概述 - http://www.abracode.com/free/cmworkshop/on_my_command.html。另一个可以让您的脚本编写更轻松的工具是http://wafflesoftware.net/thisservice/将项目添加到服务菜单。