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の両方のバージョンでこのコードを正常に動作させる方法についての提案。前もって感謝します :)

編集:

私はネットワークドライブからファイルを選択していて、ホステルシステムはWindowsOSを持っています。すべてのシステムは同じネットワークにあります。

4

2 に答える 2

2

コマンドはあなたrevealを助けるかもしれません。ファインダーでファイルを見つけ、必要に応じて新しいウィンドウを開き、ファイルを選択するだけです。これらはすべて、1行のコードを使用するだけです。

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

もちろん、これが機能するには、ファイルが実際に存在している必要があります。特定のファイル/ディレクトリがエイリアス形式(つまり)で表示される場合、それが存在することがわかりますMacintosh HD:Users:billybob:Desktop:howToHack.pdf。存在しないファイルをエイリアスに強制しようとすると、エラーが発生します。ファイルが存在することを100%確信していて、ファイルがどこにあるかを正確に知っている場合は、おめでとうございます。心配することが1つ少なくなります。確実性レベルが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

これはあなたが書いたものよりも効率的ですか、それとも時間はかかりませんか?正直なところ、特にわかりません。revealただし、 Mac 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ファイルを表示することはできません。文字列に変換する必要があります。Appleにはこの最適化はありません。
  3. フルファイルパスを指定しなかったため、existsコマンドは常にfalseを返します。javaとc++は省略されたファイルパスを許可しますが、appleは許可しません。

コメントできないので、代わりにこれを答えにすることを余儀なくされました。

于 2012-06-27T12:29:13.310 に答える