Отримайте шлях до батьківської папки розташування скрипту: Applescript


9

Передумови: Я намагаюся написати простий додаток для яблука, який запустить додаток tcl, але я застряг у першій частині сценарію.

Мені потрібно отримати батьківську папку шляху до яблучного сценарію. Коли я запускаю цей код:

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

Відповіді:


16

Спробуйте:

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

Спасибі, адайздон! Останній код я розмістив вище в оригінальному запитанні. У мене є ще одне питання. Програма запуску не закривається після її запуску. Чи є у вас ідеї, як обійти це? Я думав, що відправлення виводу в програму dev / null зупинить це від того, щоб це сталося ...
Simon

Незважаючи на це, я знайшов відповідь тут . Я додав "/ dev / null 2> & 1 &" до кінця команди, а не просто "/ dev / null &".
Симон

1

Сценарій слід запустити з блоку "Повідомити блок", наприклад:


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.