对别名的怀疑

时间:2010-11-12 11:32:14

标签: applescript alias

我在AppleScript文档中读到 - 'alias'是一个关键字,表示之后 编译(即检查语法)时,脚本应记住文件的ID,并且在执行时,不应向Finder询问由定义的路径指定的位置的文件,而是基于ID。

所以我决定使用这个脚本来玩它 -

set samplePath to alias "Mac:Miraaj:eCBTMood:anim1.png"
tell application "Finder"
    open samplePath
end tell

我编译了这个脚本并将其保存为AppleScript应用程序。我通过双击它来执行它并打开正确的文件。然后我将文件名更改为anim2.png,并重新执行该应用程序。我认为它应该再次打开相同的文件,但它给出了这个错误:

  

文件Mac:Miraaj:eCBTMood:anim1.png是   找不到

如果我做错了或错误地解释'别名',有人可以建议我吗?

谢谢,

Miraaj

2 个答案:

答案 0 :(得分:2)

如果您将别名设置为属性而不是简单变量,则此功能将起作用。

我复制了您的脚本并复制了您注意到的行为:如果文件被移动或重命名,则脚本无法再找到它。

然后我将脚本修改为:

property samplePath : alias "Mimosa:Users:jerry:Desktop:Lost Cities"
tell application "Finder"
    open samplePath
end tell

现在,脚本应用程序能够在移动它时找到该文件。当我重命名它时,它能够找到该文件。

我认为,不同之处在于属性在保存时和实例之间保存在应用程序中,但每次都需要从原始路径重新创建简单变量,如果原始路径失败,则无法生效。

考虑这种变化:

set samplePath to alias "Mimosa:Users:jerry:Desktop:Lost Cities"

on idle
    global samplePath
    tell application "Finder"
        open samplePath
    end tell
    return 30
end idle

它的设置与您的一样,但脚本每30秒重复一次(将其保存为“保持打开状态”以获得此行为)。如果关闭文件然后移动它,脚本将在下一次迭代时找到该文件。如果重命名文件,它也会找到它。

这是因为脚本不必重新解释原始文件路径。它使用已保存的别名,即使文件移动或重命名也会自动维护。

只要必须返回脚本文本,它就会失败;即使使用“属性”变体,如果我再次在AppleScript编辑器中打开脚本,链接也会被破坏,因为它会尝试重新解释原始的,现在不正确的路径。

答案 1 :(得分:0)

文档错误,或至少措辞不当。 Applescript应用程序不会在运行时之间保存该信息;除非开发人员明确这样做,否则我不知道任何可以保存该信息的应用程序。

如果位置是硬编码的,并且在脚本调用别名时文件位于正确的位置,那么您可以将该别名移动到任何位置,这样就可以了。同时,重命名文件将导致后续操作失败,这就是为什么我认为文档措辞不佳。最后,一旦你退出,所有这些信息都会消失。

我在脚本中一直使用alias,但我从未见过它在运行时之间“自动”管理文件位置。我总是必须将文件放在脚本中指定的确切位置。