スクリプトの場所の親フォルダのパスを取得する:Applescript


9

背景:tclアプリを起動する単純なapplescriptアプリを作成しようとしていますが、スクリプトの最初の部分で行き詰まっています。

applescriptへのパスの親フォルダーを取得する必要があります。このコードを実行すると:

set LauncherPath to path to me
set ParentPath to container of LauncherPath

...私はこのエラーを受け取ります:

error "Can’t get container of alias \"Macintosh HD:Users:simon:Downloads:folder with spaces:CrossFire-master:CrossFire Launcher for Mac.app:\"." number -1728 from container of alias "Macintosh HD:Users:simon:Downloads:folder with spaces:CrossFire-master:CrossFire Launcher for Mac.app:"

この回答を読んだ後、私はこれを試しました:

set LauncherPath to path to me
set RealLauncherPath to first item of LauncherPath
set ParentPath to container of RealLauncherPath

...しかし、私はこのエラーを受け取りました:

error "Can’t get item 1 of alias \"Macintosh HD:Users:simon:Downloads:folder with spaces:CrossFire-master:CrossFire Launcher for Mac.app:\"." number -1728 from item 1 of alias "Macintosh HD:Users:simon:Downloads:folder with spaces:CrossFire-master:CrossFire Launcher for Mac.app:"

どんな助けやアイデアも大歓迎です。前もって感謝します!

PS上記の問題を理解すると、完全なスクリプトは次のようになります。

set LauncherPath to path to me
set RealLauncherPath to first item of LauncherPath
set ParentPath to container of RealLauncherPath
set UnixPath to POSIX path of ParentPath
set launcherCrossFire to "/usr/local/bin/wish " & UnixPath & "/CrossFire.tcl > /dev/null &" -- creat command to launch CrossFire
do shell script launcherCrossFire

更新:以下は、以下の回答を組み込んだ作業スクリプトです。

set UnixPath to POSIX path of ((path to me as text) & "::") --get path to parent folder
set LaunchCrossFire to "/usr/local/bin/wish '" & UnixPath & "CrossFire.tcl' > /dev/null 2>&1 &" -- creat command to launch CrossFire
do shell script LaunchCrossFire -- run command

回答:


17

試してください:

set UnixPath to POSIX path of ((path to me as text) & "::")

ありがとう、adayzdone!上記の最終コードを元の質問に投稿しました。もう1つ問題があります。ランチャーアプリを実行しても終了しません。それを回避する方法について何かアイデアはありますか?出力をdev / nullに送信すると、それが発生するのを防ぐことができると思いました...
Simon

気にしないで、私はここで答えを見つけました。コマンドの最後に、「/ dev / null&」ではなく「/ dev / null 2>&1&」を追加しました。
Simon

1

次のように、「Tell Block」内からスクリプトを実行する必要があります。


tell application "Finder"
get path to me

set a to container of the result
return (a as alias)
-- Or just get the name of the Parent Container like;
set b to name of a
return b
end tell
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.