Obter caminho da pasta pai do local do script: Applescript

9

Antecedentes: estou tentando escrever um aplicativo AppleScript simples que iniciará um aplicativo tcl, mas estou ficando preso na primeira parte do script.

Eu preciso obter a pasta pai do caminho para o AppleScript. Quando executo esse código:

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

... Eu recebo este erro:

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

Depois de ler esta resposta , tentei o seguinte:

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

... mas eu recebi este erro:

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

Qualquer ajuda ou idéias muito apreciadas. Desde já, obrigado!

PS, uma vez que eu descobrir os problemas acima, o script completo será algo como isto:

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

ATUALIZAÇÃO: Aqui está o script de trabalho que incorpora a resposta abaixo:

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
Simon
fonte

Respostas:

17

Tentar:

set UnixPath to POSIX path of ((path to me as text) & "::")
adayzdone
fonte
Obrigado, adayzdone! Publiquei o código final acima na pergunta original. Eu tenho mais um problema. O aplicativo iniciador não fecha após a execução. Você tem alguma idéia de como contornar isso? Eu pensei que o envio da saída para dev / null iria impedir que isso aconteça ...
Simon
Deixa pra lá, encontrei a resposta aqui . Eu adicionei "/ dev / null 2> & 1 &" ao final do comando em vez de apenas "/ dev / null &".
Simon #
1

Você deve executar o script dentro de um '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
Capitainos
fonte