查找文件在finder问题中选择它

时间:2012-06-27 08:46:34

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

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

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(雪豹)上运行此脚本时,它正在选择文件但是花费了太多时间。任何建议如何使这个代码在两个版本的Mac上都能正常工作。 在此先感谢:)

修改

我从网络驱动器中选择文件,宿舍系统正在使用Windows Os。所有系统都位于同一网络中。

2 个答案:

答案 0 :(得分:2)

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

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

当然,文件必须存在才能使其正常工作。当您以别名形式(即Macintosh HD:Users:billybob:Desktop:howToHack.pdf)显示特定文件/目录时,您就知道它存在。尝试将不存在的文件强制转换为别名将导致错误。如果您100%确定该文件存在并确切知道它在哪里,恭喜!你可以少担心一件事。如果您的确定性级别低于100%,请使用try-catch块。他们多次挽救了我的生命。这样,如果您像我一样通过互联网分发您的应用程序,则不会向您的客户提供难以理解的错误消息。

以下是一个例子:

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命令,结果令人满意。

答案 1 :(得分:0)

您的代码中存在错误。

  1. 您忘记了显示提示行中“存在”之后的一段时间。
  2. 您无法显示posix文件。它必须转换为字符串。 Apple没有这种优化。
  3. exists命令将始终以您使用它的方式返回false,因为您没有提供完整的文件路径。虽然java和c ++允许缩写文件路径,但apple没有。
  4. 我无法评论,所以我不得不把它作为答案。