Uzyskaj ścieżkę do folderu nadrzędnego lokalizacji skryptu: Jabłkowy


9

Tło: Próbuję napisać prostą aplikację AppleScript, która uruchomi aplikację tcl, ale utknąłem w pierwszej części skryptu.

Muszę pobrać folder nadrzędny ścieżki do skryptu jabłkowego. Kiedy uruchamiam ten kod:

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

... dostaję ten błąd:

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:"

Po przeczytaniu tej odpowiedzi spróbowałem:

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

... ale dostałem ten błąd:

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:"

Każda pomoc lub pomysły są mile widziane. Z góry dziękuję!

PS Kiedy rozwiążę powyższe problemy, pełny skrypt będzie wyglądał mniej więcej tak:

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

AKTUALIZACJA: Oto działający skrypt zawierający odpowiedź poniżej:

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

Odpowiedzi:


17

Próbować:

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

Dzięki, adayzdone! Ostateczny kod zamieściłem powyżej w pierwotnym pytaniu. Mam jeszcze jeden problem. Aplikacja uruchamiająca nie zamyka się po uruchomieniu. Czy masz jakieś pomysły na obejście tego? Myślałem, że wysłanie wyjścia do dev / null powstrzyma to ...
Simon

Nieważne, znalazłem odpowiedź tutaj . Dodałem „/ dev / null 2> & 1 &” na końcu polecenia zamiast po prostu „/ dev / null &”.
Simon

1

Powinieneś uruchomić skrypt z poziomu „Tell Block”, takiego jak:


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.