#macos #terminal #applescript #sh #executable-jar
#macos #терминал #applescript #sh #исполняемый файл-jar
Вопрос:
Я пытаюсь создать скрипт, который выполняет исполняемый файл Jar в виде приложения applescript. У меня не очень большой опыт работы с applescript, поэтому я в основном отказывался от онлайн-фрагментов. Первая проблема, с которой я столкнулся, заключалась в том, что каталог автоматически форматируется с использованием «:» вместо косой черты (например, «usr: bin» вместо «usr / bin»), поэтому я нашел что-то, что должно заменить: на / . Это, однако, каждый раз приводит к ошибке.
Я мало что нашел о том, как исправить мою ошибку, и то, что я нашел, было очень специфичным для этих случаев и не имело для меня особого смысла.
Это мой код:
tell application "Finder"
set current_path to container of (path to me) as alias
end tell
set AppleScript's text item delimiters to ":"
set currPath to text items of current_path
set AppleScript's text item delimiters to "/"
set current_path to currPath as string
set AppleScript's text item delimiters to {""}
currPath
tell application "Terminal"
activate
set currentTab to do script ("cd " amp; current_path)
set currentTab to do script ("java -jar Inoisulcnoc Pre-Alpha 2")
end tell
Ошибка, которую я получаю каждый раз, гласит:
ошибка «Не удается получить каждый текстовый элемент псевдонима «Macintosh HD: Пользователи: knotsnappy: Рабочий стол: Inoisulcnoc Pre-Alpha 2:».» номер -1728 из каждого текстового элемента псевдонима «Macintosh HD: Пользователи: knotsnappy: Рабочий стол: Inoisulcnoc Pre-Alpha 2:»
Как я должен это исправить?
Ответ №1:
Вы захотите изменить стандартный путь на POSIX
path.
tell application "Finder"
set current_path to (POSIX path of (container of (path to me) as alias))
end tell
tell application "Terminal"
activate
set currentTab to do script ("cd " amp; current_path)
set currentTab to do script ("java -jar Inoisulcnoc Pre-Alpha 2")
end tell
Разделители и т.д. не нужны, если у вас есть правильный синтаксис.
Комментарии:
1. Спасибо, это полностью устранило эту проблему. единственная проблема, с которой я столкнулся сейчас, заключается в том, что это не учитывает, есть ли в каталоге пробелы, поэтому, если пользователь поместит его, например, в папку с именем «Программа Inoisulcnoc», он будет искать только папку с именем «Inoisulcnoc». Я знаю, что это был не мой первоначальный вопрос, но у вас случайно нет решения для этого?
2. Неважно, исправлено все с помощью: скажите приложению «Finder» установить current_path в (POSIX path of (контейнера (пути ко мне) в качестве псевдонима)) end скажите установить разделители текстовых элементов AppleScript в » » установить currPath для текстовых элементов current_path установить разделители текстовых элементов AppleScript в «\ » установить current_path в currPath в качестве строки установить разделители текстовых элементов AppleScript в {«»} currPath сообщить приложению «Терминал» активировать set currentTab для выполнения скрипта («cd » amp; current_path amp; «; java — jar » amp; current_path amp; «Inoisulcnoc.jar «) конец сообщения
3. Всегда пожалуйста! Для размещения путей, которые могут содержать пробелы, используйте
amp; quoted form of current_path
.