2012-06-27 27 views
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操作系統。所有系統都位於同一網絡中。

回答

2

reveal命令可能對您有幫助。它簡單地定位在Finder文件,如有必要,將打開一個新的窗口,然後選擇文件的所有隻用一個代碼行:當然

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命令,結果一直令人滿意。

+0

謝謝你的回答。我試過顯示命令,但沒有發現任何重大變化:( – Zaksh

+0

@ Zaksh我很遺憾聽到你不滿意。對於性能而言你有什麼期望? – fireshadow52

+0

我只是希望腳本能夠像快速,因爲它是在MAC OS X 10.6上工作,而我錯過的一件事是我從網絡驅動器中選擇文件,而宿舍系統正在使用Windows操作系統。所有系統都在同一網絡中(本地) – Zaksh

0

您的代碼有錯誤。

  1. 您在顯示警告行中「存在」後忘記了一段時間。
  2. 您不能顯示一個posix文件。它必須轉換爲字符串。蘋果公司沒有這種優化。
  3. 由於您沒有提供完整的文件路徑,因此exists命令將始終以您使用它的方式返回false。儘管java和C++允許縮寫文件路徑,但蘋果不支持。

我不能評論,所以我不得不把這個作爲一個答案,而不是。

+0

「filePath.ext」是指一些有效的擴展名的有效路徑,正如我提到的代碼在MAC OS x 10.6上工作得很完美,但它在MAC OS x 10.5上只是有點慢 – Zaksh