2

我正在使用 automator 创建 osx 服务,以显示文件的上下文菜单项,例如 dropbox 如何显示下面的菜单。

Dropbox 右键单击​​上下文菜单

我知道这些不是 osx 服务,但是我想用 osx 服务完成同样的事情。因此,我在 Finder.app 中使用 automator 为文件和文件夹创建了 2 个 osx 服务,并为此附加了一个 shell 脚本操作。

现在我可以在上下文菜单中看到我所有的 2 项服务(与 a 共享,与 b 共享),如下所示

在此处输入图像描述

从 shell 脚本(这些服务的操作)正在启动一个应用程序。我想使用文件路径和服务名称作为两个命令行参数来启动应用程序。

知道如何在 shell 脚本中获取用户选择的服务的服务名称,就像我们从命令行参数“$@”获取文件名一样

4

1 回答 1

1

“基本上,我的目标是打开一个浏览器,其 URL 对每个菜单项都不同。”

类似以下 AppleScript 的内容可用于使用 AppleScript 在默认 Web 浏览器中打开 URL:

tell application "Finder" to open location "http://learnbymac.com"

类似于以下 shell 脚本的内容可用于从 shell 打开 URL:

open -a "Finder" "http://learnbymac.com"

使用 Finder 打开 URL 比使用 Safari 更好,因为当您使用 Finder 打开 URL 时,您将获得默认浏览器,而不是始终使用 Safari。

“我将通过将路径传递给文件和服务名称来从 shell 脚本启动一个应用程序/exe,以便应用程序可以通过从数据库中读取文件详细信息并在浏览器中加载 url 来基于服务名称构造 url。 "

启动应用程序时,您可能必须在工作流的“运行 Shell 脚本”操作中提供服务名称。无论如何,这可能是最好的,因为如果用户更改了服务的名称,您的软件仍然可以运行。我知道最好不要在工作流的捆绑包中重复服务的名称,然后再在“运行 Shell 脚本”操作中重复,但我不知道如何获取当前正在运行的服务的名称。

-- 凯德尔
kaydell@yahoo.com

于 2013-07-29T21:23:38.353 回答