1

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

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 操作系统。所有系统都位于同一网络中。

4

2 回答 2

2

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

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

于 2012-06-27T10:14:11.900 回答
0

您的代码中有错误。

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

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

于 2012-06-27T12:29:13.310 回答