AppleScript显示别名的隐藏原件的包装内容


5

我正在尝试构建一个Automator工作流程(将其保存为服务,以便我既可以从上下文菜单访问它,又可以使用键盘快捷键调用它),其功能类似于Finder的内置“显示包”目录”命令,但该命令还将接受包的别名作为输入。该服务将满足以下条件:

仅当Finder的选择包含程序包或程序包别名时,此选项才可用。

服务不会像内置命令那样显示软件包目录本身的内容,而是显示位于软件包目录内的“目录”目录(如果存在)的内容。

如果Finder的选择是桌面上的软件包或别名,则应在新的Finder窗口中打开Contents目录。否则,应在包含所选内容的Finder窗口中打开Contents目录。

我的方法是让脚本首先确定文件是否为Alias,如果是,则告诉脚本显示原始内容。如果该文件不是别名,我想告诉脚本仅显示输入内容。

排除别名作为输入的可能性,并假设在Finder窗口中选择了输入包,我可以在同一窗口中成功编写一个脚本,以显示包内容文件夹的内容:

on run {input, parameters}
    set my_output to {}
    repeat with oneItem in input
        tell application "Finder" to set target of window 1 to ((oneItem as text) & "Contents")
end repeat
return input
end run

当我尝试设置“ if ... then ... else”方案时,我失败了。

我正在使用所有相关软件的最新版本。


欢迎,我们不会忽略您,只是在等待可以回答您问题的人。
Ruskes

请附加失败的尝试(如果/然后/否则)。调试失败的原因可能会为您提供更快的解决方案。
Graham Miln

Answers:


1

folder "Contents" of 也可以使用别名:

on run {input, parameters}
    tell application "Finder"
        repeat with f in input
            open folder "Contents" of f
        end repeat
    end tell
end run

您还可以从“系统偏好设置”中分配用于显示软件包内容的快捷方式:

Command-R显示别名的原始文件。


1

您可以尝试如下操作:

   on run {input, parameters}
    tell application "Finder"
        repeat with oneItem in input
            if kind of oneItem = "Alias" then set oneItem to oneItem's original item
            set contentsPath to (oneItem as text) & "Contents"
            if oneItem's container as text = (path to desktop as text) then
                open contentsPath
            else
                set target of window 1 to contentsPath
            end if
            activate
        end repeat
    end tell
end run

您可能还想包括一个测试,以确保输入的内容是预期的类型。


此工作流程失败:“运行AppleScript失败-1错误:AppleEvent处理程序失败。”
Parker

有一个额外的冒号。再试一次。
2014年

0

我知道了:

on run {input, parameters}
    tell application "Finder"
        repeat with f in input
            reveal f
            set target of window 1 to (folder "Contents" of f as text)
        end repeat
    end tell
end run
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.