Ошибка при замене символов applescript

#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 .