查找以特定字符串applescript开头的应用程序

时间:2014-04-03 08:15:43

标签: regex applescript osx-mavericks

我想查找是否使用AppleScript安装了应用程序。

应用程序可以在同一台PC上安装不同的版本。

因此,应用程序的名称格式为" FooBar vXX.XX"

现在,当我尝试

tell application "Finder" to get application "FooBar"

该脚本启动了一个弹出窗口,要求用户手动查找该应用程序。因为,我没有提供应用程序的全名 - 包括版本号。

我的查询是,如何在没有全名的情况下找到已安装的应用程序?这是必要的,因为我不知道安装了哪个版本。

在这种情况下我可以使用正则表达式 - 如何在此示例中使用它?

1 个答案:

答案 0 :(得分:2)

您可以使用do shell脚本命令在命令行上使用聚光灯。您可以向聚光灯询问名称以某个字符串开头的所有应用程序的列表。应用程序确实具有'kMDItemContentType'键的'com.apple.application-bundle'值。我们可以使用kMDItemFSName来匹配文件名。您还可以使用kMDItemDisplayName属性。这是使用kMDItemFSName

的示例
every paragraph of (do shell script "mdfind 'kMDItemContentType == com.apple.application-bundle && kMDItemFSName == FooBar*'")

另一种方法是当您知道应用程序的包标识符时。大多数情况下,捆绑标识符在应用程序的所有版本中保持不变,甚至是市长更新。例如,Terminal.app确实有一个包标识符com.apple.Terminal,它对所有版本都是相同的。搜索键是kMDItemCFBundleIdentifier:

every paragraph of (do shell script "mdfind 'kMDItemCFBundleIdentifier == com.apple.Terminal'")

注意:搜索字符串区分大小写; foob​​ar与FooBar不同

如果您不知道应用程序的包标识符是什么,可以使用AppleScript执行此操作:

tell application "FooBar" to return id