11

AppleScriptで、開く必要のあるファイルパスを1つ受け取ります。

ファイルパスの形式は「/Users/xxx/my/file/to/open.xyz」です。

デフォルトのプログラムで開きたい。AVIの場合は、ビデオプログラムで開く必要があります。xlsの場合は、Excelで...

私は成功せずにいくつかのことを試みました:

--dstfile contains the previous path
tell application "Finder"
    activate
    open document dstfile
end tell

->エラー1728が発生し、ドキュメントを取得できなかったと表示されます

tell application "Finder"
    activate
    open document file dstfile
end tell

->ここも同じ

tell application "Finder"
    activate
    open document POSIX file dstfile
end tell

->ここも同じ

このコードを実行する前にこれを行うので、ファイルが存在すると確信しています。

if not (exists dstfile) then
    display dialog "File isn't existing"
end if

これをパラメータとして受け取ったため、toof...のsynthaxopen.xyzを使用できません。

私が必死になっているのを手伝ってください:'(

回答:回答に基づいて、私はこれで終わります:

set command to "open " & quoted form of dsturl
do shell script command
4

2 に答える 2

19

ここでの問題は2つあります。

  1. パスはPOSIX表記であり、AppleScriptは、HFS表記()のパス文字列からのみ暗黙的に作成されるため、Finderで受け入れ可能なエイリアスまたはファイルオブジェクトに強制することはできませんUsers:xxx:my:file:to:open.xyz。パスをPOSIXファイルとして明示的に宣言すると、これが解決されます。でも、
  2. Finderを呼び出すと、パスの前にドキュメントが付加されますが、FinderのAppleScriptディクショナリにはドキュメントオブジェクトタイプが含まれていません(ドキュメントファイルオブジェクトがありますが、この呼び出しでは作成できないファインダーアイテムの子です)。その部分を削除すると、問題が解決します。

TL; DR:次の行は、シェルに頼ることなく、デフォルトプログラムのPOSIXパスを介して指定されたファイルを開きます。

tell application "Finder" to open POSIX file "/Users/xxx/my/file/to/open.xyz"

警告:これは最も単純な解決策ですが、質問のような修飾されたPOSIXパス(つまり、で始まるパス)に対してのみ機能し/ます。~相対的なもの(つまり、、.またはで始まるパス..)を処理するには、OTOHにはAppleScript-ObjectiveC API(厳密には些細なことではありません)またはシェル(引用符を楽しんでください)のいずれかが必要です。

于 2012-04-12T22:12:34.250 に答える
3

試す:

set dstfile to "~/xxx/my/file/to/open.xyz"
do shell script "open " & dstfile & ""
于 2012-04-12T15:39:53.957 に答える