Obtener la ruta de la carpeta principal de la ubicación del script: Applescript


9

Antecedentes: estoy tratando de escribir una aplicación simple de applecript que lanzará una aplicación tcl, pero me estoy atascando en la primera parte del script.

Necesito obtener la carpeta principal de la ruta al manuscrito. Cuando ejecuto este código:

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

... me sale este error:

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

Después de leer esta respuesta , probé esto:

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

... pero recibí este error:

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

Cualquier ayuda o ideas muy apreciadas. ¡Gracias por adelantado!

PD: una vez que descubra los problemas anteriores, el script completo será algo como esto:

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

ACTUALIZACIÓN: Aquí está el script de trabajo que incorpora la respuesta a continuación:

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

Respuestas:


17

Tratar:

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

Gracias adayzdone! Publiqué el código final arriba en la pregunta original. Tengo un problema mas. La aplicación de inicio no se cierra después de ejecutarla. ¿Tienes alguna idea sobre cómo solucionarlo? Pensé que enviar la salida a dev / null evitaría que eso suceda ...
Simon

No importa, encontré la respuesta aquí . Agregué "/ dev / null 2> & 1 &" al final del comando en lugar de solo "/ dev / null &".
Simon

1

Debería ejecutar el script desde un 'Tell Block' como:


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.