Abrufen des Pfads des übergeordneten Ordners des Skriptverzeichnisses: Applescript


9

Hintergrund: Ich versuche, eine einfache Applescript-App zu schreiben, mit der eine Tcl-App gestartet wird, aber ich bleibe beim ersten Teil des Skripts hängen.

Ich muss den übergeordneten Ordner des Pfads zum AppleScript abrufen. Wenn ich diesen Code ausführe:

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

... ich bekomme diesen Fehler:

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

Nachdem ich diese Antwort gelesen hatte , versuchte ich Folgendes:

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

... aber ich habe diesen Fehler bekommen:

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

Jede Hilfe oder Ideen sehr geschätzt. Danke im Voraus!

PS Wenn ich die obigen Probleme herausgefunden habe, wird das vollständige Skript ungefähr so ​​aussehen:

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

UPDATE: Hier ist das Arbeitsskript mit der folgenden Antwort:

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

Antworten:


16

Versuchen:

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

Danke, adayzdone! Ich habe den letzten Code oben in der ursprünglichen Frage gepostet. Ich habe noch ein Problem. Die Launcher-App wird nach dem Ausführen nicht geschlossen. Haben Sie Ideen, wie Sie das umgehen können? Ich dachte, das Senden der Ausgabe an dev / null würde das verhindern ...
Simon

Vergiss nicht, ich habe die Antwort hier gefunden . Ich habe "/ dev / null 2> & 1 &" am Ende des Befehls hinzugefügt, anstatt nur "/ dev / null &".
Simon

1

Sie sollten das Skript in einem 'Tell Block' wie folgt ausführen:


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.