Ответы:
Способ сохранения сценария оказывает большое влияние на его работу в Mac OS X. Похоже, ваш сценарий просто сохраняется как сценарий, и именно поэтому редактор сценариев открывается при каждом его открытии.
Чтобы решить проблему, откройте скрипт в редакторе AppleScript и сохраните его как приложение. Это должно к хитрости.
Шаги есть (в редакторе)
Файл> Сохранить как>, затем выберите Формат файла для приложения, затем сохраните.
При сохранении скрипта вы можете выбрать «Приложение» из выпадающего меню «Формат файла»; тогда вы сможете запустить его, и вы все равно сможете перетащить его в редактор скриптов, чтобы открыть скрипт; или вы можете выбрать Run Only, чтобы не сохранять редактируемую версию.
Кроме того, вы можете использовать osascript
команду в терминале, либо как, osascript /path/to/script
либо osascript -e "a short script here"
.
Вы также можете поместить скрипт в папку ~ / Library / Scripts / Finder / и запустить его прямо из меню Script.
Другой способ - создать Сервис в Automator, который использует osascript
команду для запуска .scpt в Finder.
(Я не использую Automator на английском языке, поэтому формулировка может быть неточной)
В поле «Запустить AppleScript» введите следующий код:
on run {input, parameters}
tell application "Finder"
--get the selected file
set selectedItem to (item 1 of (get selection))
--get location info (folder:file format)
set fileLocation to (selectedItem as alias) as string
--replace : with / with subroutine
set the semifinal to my replace_chars(fileLocation, ":", "/")
--remove Macintosh HD with subroutine
set the theFinal to my replace_chars(semifinal, "Macintosh HD", "")
end tell
do shell script "osascript " & "\"" & theFinal & "\""
return input
end run
on replace_chars(this_text, search_string, replacement_string)
set AppleScript's text item delimiters to the search_string
set the item_list to every text item of this_text
set AppleScript's text item delimiters to the replacement_string
set this_text to the item_list as string
set AppleScript's text item delimiters to ""
return this_text
end replace_chars
Файл> Сохранить и дать ему имя типа «Запустить AppleScript»
Теперь вы можете щелкнуть правой кнопкой мыши файл .scpt в Finder, выбрать «Запустить AppleScript» и увидеть, как ваш скрипт выполняется.
Ссылка: Источник подпрограммы - AppleScript: Основные подпрограммы
osascript
и вы не закодировали его для обработки, если в Finder выбрано более одного файла .scpt. 2. Совершенно не нужно проходить через такое сложное кодирование, когда следующая единственная строка кода заменяет все, что вы добавили в действие «Выполнить AppleScript». do shell script "osascript " & quoted form of POSIX path of item 1 of input
Вот минимальный пример для замены всего в вашем текущем коде AppleScript: paste.ee/p/XngKA
if
блок оператора может быть расширен с помощью else
предложения, которое отображает сообщение о том, что выбранный файл не является файлом .scpt. Таким образом, пользователи не задаются вопросом, почему ничего не произошло, если они не увидели, что они случайно выбрали неправильный тип файла при запуске службы.