Ottieni il percorso della cartella principale della posizione dello script: Applescript


9

Sfondo: sto provando a scrivere una semplice app applecript che avvierà un'app tcl, ma mi sto bloccando nella prima parte dello script.

Ho bisogno di ottenere la cartella genitore del percorso per lo script di mele. Quando eseguo questo codice:

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

... ottengo questo errore:

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

Dopo aver letto questa risposta , ho provato questo:

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

... ma ho riscontrato questo errore:

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

Qualsiasi aiuto o idea molto apprezzato. Grazie in anticipo!

PS una volta che avrò capito i problemi di cui sopra, lo script completo sarà qualcosa del genere:

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

AGGIORNAMENTO: ecco lo script di lavoro che incorpora la risposta di seguito:

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

Risposte:


17

Provare:

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

Grazie, adayzdone! Ho pubblicato il codice finale sopra nella domanda originale. Ho ancora un problema. L'app di avvio non si chiude dopo averla eseguita. Hai qualche idea su come aggirare questo? Pensavo che l'invio dell'output a dev / null avrebbe impedito che ciò accadesse ...
Simon

Non importa, ho trovato la risposta qui . Ho aggiunto "/ dev / null 2> & 1 &" alla fine del comando anziché semplicemente "/ dev / null &".
Simon,

1

Dovresti eseguire lo script da un 'Tell Block' come:


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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.