Получить путь к родительской папке расположения скрипта: Applescript


9

Справочная информация: я пытаюсь написать простое приложение appleScript, которое запустит приложение tcl, но я застреваю в первой части сценария.

Мне нужно получить родительскую папку пути к appleScript. Когда я запускаю этот код:

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

... я получаю эту ошибку:

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

Прочитав этот ответ , я попробовал это:

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

... но я получил эту ошибку:

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

Любая помощь или идеи высоко ценится. Заранее спасибо!

PS Как только я разберусь с вышеуказанными проблемами, полный сценарий будет примерно таким:

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

ОБНОВЛЕНИЕ: Вот рабочий скрипт, включающий ответ ниже:

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

Ответы:


17

Пытаться:

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

Спасибо, адайздоне! Я разместил окончательный код выше в оригинальном вопросе. У меня есть еще одна проблема. Приложение запуска не закрывается после запуска. У вас есть идеи, как это обойти? Я думал, что отправка вывода в dev / null остановит это ...
Simon

Неважно, я нашел ответ здесь . Я добавил «/ dev / null 2> & 1 &» в конец команды вместо просто «/ dev / null &».
Симон

1

Вы должны запустить скрипт из «Tell Block», например:


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.