Виконати яблучний сценарій без відкриття редактора


12

Щоразу, коли мені хочеться запустити яблучний скрипт, редактор вискакує.

Чи є спосіб запустити його безпосередньо?

Відповіді:


19

Накопичення збереження сценарію має великий вплив на те, як він буде працювати в Mac OS X. Це здається, що ваш сценарій просто збережений як сценарій, і саме це призводить до того, що редактор сценаріїв відкривається кожного разу, коли ви відкриваєте сценарій.

Щоб вирішити проблему, відкрийте скрипт у редакторі AppleScript і збережіть його як додаток. Це слід до хитрості.

Етапи (в редакторі)

Файл> Зберегти як>, а потім встановіть Формат файлу на додаток, а потім збережіть.

текст посилання


Тепер це підказує: "Натисніть запустити, щоб запустити або киньте, щоб вийти" ... але я думаю, що це помилка сценарію! Дякую
OscarRyz

1
Якщо встановити прапорець для запуску, це може зупинити появу підказки.
Брюс Маклеод

Я розумію, що прапорець Запуск лише не дозволяє редагувати сценарій пізніше.
jtbandes

@jtbandes ahhhh ... це має сенс
Брюс Маклеод

2
Зауважте, що в Yosemite поточним методом є використання Файл -> Експорт. Більше немає діалогу "Зберегти як" в останній версії редактора AppleScript.
anon58192932

7

Зберігаючи сценарій, ви можете вибрати "Application" зі спадного меню File Format; тоді ви зможете запустити його, і ви все одно зможете перетягнути його до редактора сценаріїв, щоб відкрити сценарій; або ви можете вибрати Виконати лише, щоб не зберегти редаговану версію.

Крім того, ви можете використовувати osascriptкоманду в Terminal або як osascript /path/to/scriptабо osascript -e "a short script here".


1

Ви також можете розмістити скрипт у папці ~ / Бібліотека / Сценарії / Finder / і запустити його безпосередньо з меню Скрипт.


1

Під macOS High Sierra 10.13 немає Файлу / Зберегти як.

Ви повинні використовувати файл / експорт / формат файлу: додаток Експорт файлів Формат файлу


0

Іншим способом є створення сервісу в Automator, який використовує osascriptкоманду для запуску .scpt у Finder.

(Я не використовую Автоматизатор англійською мовою, тому формулювання може бути неточним)

  1. Запустіть Автоматизатор
  2. Файл> Створити та виберіть Сервіс
  3. У розділі "Сервіс приймає" виберіть "Файл або папка"
  4. У розділі "Розташування:" виберіть "Finder.app"
  5. Знайдіть «Запустити AppleScript» та перетягніть елемент праворуч
  6. У полі Запустити 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
    
  7. Файл> Збережіть і дайте ім'я типу "Запустити AppleScript"

  8. Тепер ви можете клацнути правою кнопкою миші.

Довідка: Джерело підпрограми - AppleScript: Основні підпрограми


Я бачу проблеми з вашим кодом AppleScript. 1. У вас немає помилок обробки або коду для перевірки того, що вибрано - це osascript. 2. Абсолютно не потрібно проходити таку ригмарол кодування, коли наступний єдиний рядок коду замінює все, що ви додали до дії Виконати AppleScript. do shell script "osascript " & quoted form of POSIX path of item 1 of inputОсь мінімальний приклад заміни всього у вашому поточному коді AppleScript: paste.ee/p/XngKA
user3439894

У мінімальному прикладі ifблок операторів може бути розширений elseпунктом, який відображає повідомлення про те, що вибраний файл не був .scpt-файлом. Таким чином, користувачеві не залишається цікаво, чому нічого не сталося, якщо вони не побачили, що вони випадково обрали неправильний тип файлу під час запуску служби.
користувач3439894
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.