【问题标题】:Finding a file selecting it in finder issue在查找器问题中查找文件选择它
【发布时间】:2012-06-28 15:59:23
【问题描述】:

我有这个脚本来查找文件并选择它

set filePath to ("filePath.ext" as POSIX file)
tell application "Finder"
    if (exists filePath) then
            select filePath
            activate
    else
        display alert "File " & filePath & " does not exist"
    end if
end tell

它在 Mac os x 10.6.x (LION) 上运行良好,但是当我尝试在 Mac os x 10.5.x (snow-leopard) 上运行此脚本时,它正在选择文件但花费了太多时间。任何建议如何使此代码在两个版本的 Mac 上都能正常工作。 在此先感谢:)

编辑:

我正在从网络驱动器中选择文件,并且宿舍系统具有 Windows 操作系统。所有系统都位于同一个网络中。

【问题讨论】:

    标签: osx-lion applescript osx-snow-leopard


    【解决方案1】:

    reveal 命令可能对您有所帮助。它只是在查找器中找到一个文件,必要时打开一个新窗口,然后选择该文件——所有这一切只使用一行代码:

    tell application "Finder" to reveal path:to:some:file
    

    当然,该文件必须实际存在才能正常工作。当以别名形式(即Macintosh HD:Users:billybob:Desktop:howToHack.pdf)呈现特定文件/目录时,您就知道它存在。尝试将不存在的文件强制转换为别名将导致错误。如果您 100% 确定该文件存在并且确切地知道它的位置,那么恭喜!你少担心一件事。如果您的确定性水平低于 100%,请使用 try-catch 块。他们多次救了我的命。这样一来,如果您像我一样通过 Internet 分发您的应用程序,您的客户就不会收到无法解读的错误消息。

    下面是一个例子:

    set theFile to "/Users/billybob/Desktop/folder/subfolder/subfolder2/subfolder3/fineByMe.mp3"
    try
        set theFile to (theFile) as alias
        tell application "Finder" to reveal theFile
    on error
        display alert "The file " & quoted form of theFile & "does not exist."
        -- The variable 'theFile' couldn't be coerced into an alias.
        -- Therefore, 'theFile' still has a string value and it can be used in dialogs/alerts among other things.
    end try
    

    这比你写的更有效还是更省时?老实说,我不是特别确定。但是,我编写了许多脚本,其中包括 Mac OS X 10.5.8 (Leopard)、Mac OS X 10.6.8 (Snow-Leopard) 和 Mac OS X 10.7.3 (Lion) 上的 reveal 命令,以及结果令人满意。

    【讨论】:

    • 感谢您的友好回答。我尝试了显示命令,但没有发现任何重大变化:(
    • @Zaksh 很遗憾听到您不满意。就性能而言,您有什么期望?
    • 我只希望脚本在 MAC OS x 10.6 上运行时一样快,而我错过的一件事是我正在从网络驱动器中选择文件,而宿舍系统正在使用 Windows 操作系统。所有系统都在同一个网络中(本地)
    • @Zaksh Ahhh 从网络中检索文件可能是您的问题。最新版本的 Mac 改进了网络功能,因此 Snow-Leopard 可能具有 Leopard 所没有的功能,而且我认为这是不可修复的。不过,它可能是。考虑发布从网络中检索文件的代码。到时候我也许可以进一步帮助你。 :)
    • 感谢您的谦虚帮助,我手动映射网络驱动器,我只是使用自定义协议将文件路径传递给我的脚本。
    【解决方案2】:

    您的代码中有错误。

    1. 您忘记了显示警报行中“存在”后的句点。
    2. 您无法显示 posix 文件。它必须转换为字符串。 Apple 没有这种优化。
    3. exists 命令将始终按照您使用它的方式返回 false,因为您没有提供完整的文件路径。尽管 java 和 c++ 允许使用缩写的文件路径,但苹果不允许。

    我无法发表评论,所以我不得不将其作为答案。

    【讨论】:

    • "filePath.ext" 表示一些有效路径和有效扩展名,正如我提到的,代码在 MAC OS x 10.6 上运行完美,但在 MAC OS x 10.5 上运行有点慢
    猜你喜欢
    • 2010-11-30
    • 1970-01-01
    • 2013-08-01
    • 2018-10-30
    • 1970-01-01
    • 2016-05-22
    • 2015-10-31
    • 2013-11-12
    • 2014-05-19
    相关资源
    最近更新 更多