Odpowiedzi:
Sposób zapisywania skryptu ma duży wpływ na to, jak będzie on działał w systemie Mac OS X. Wygląda na to, że skrypt jest zapisywany jako skrypt, i to powoduje, że edytor skryptów otwiera się przy każdym otwarciu skryptu.
Aby rozwiązać problem, otwórz skrypt w edytorze AppleScript i zapisz go jako aplikację. To powinno wystarczyć.
Kroki są (w edytorze)
Plik> Zapisz jako> następnie ustaw Format pliku na aplikację, a następnie zapisz.
Podczas zapisywania skryptu możesz wybrać „Aplikacja” z menu rozwijanego Format pliku; wtedy będziesz mógł go uruchomić i nadal będziesz mógł przeciągnąć go do Script Editor, aby otworzyć skrypt; lub możesz wybrać opcję Uruchom tylko, aby nie zapisać wersji do edycji.
Alternatywnie możesz użyć osascript
polecenia w terminalu jako osascript /path/to/script
lub osascript -e "a short script here"
.
Możesz także umieścić skrypt w folderze ~ / Library / Scripts / Finder / i uruchomić go bezpośrednio z menu Skrypt.
W systemie macOS High Sierra 10.13 nie ma opcji Plik / Zapisz jako.
Innym sposobem jest utworzenie usługi w Automatorze, która używa osascript
polecenia do uruchomienia .scpt w Finderze.
(Nie używam Automatora w języku angielskim, więc sformułowanie może być niedokładne)
W polu Uruchom AppleScript wprowadź następujący kod:
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
Plik> Zapisz i nadaj mu nazwę „Uruchom AppleScript”
Teraz możesz kliknąć prawym przyciskiem myszy plik .scpt w Finderze i wybrać „Uruchom AppleScript” i zobaczyć, jak skrypt został wykonany.
Odniesienie: Źródło podprogramu - AppleScript: Essential Sub-Procedines
osascript
i nie zakodowałeś go do obsługi, jeśli w Finderze wybrano więcej niż jeden plik .scpt. 2. Absolutnie nie ma potrzeby przechodzenia przez takie rygory kodowania, gdy następujący pojedynczy wiersz kodu zastępuje wszystko, co dodałeś do akcji Uruchom AppleScript. do shell script "osascript " & quoted form of POSIX path of item 1 of input
Oto minimalny przykład zastąpienia wszystkiego w bieżącym kodzie AppleScript: paste.ee/p/XngKA
if
blok instrukcji można rozwinąć za pomocą else
klauzuli, która wyświetla komunikat, że wybrany plik nie jest plikiem .scpt. W ten sposób użytkownik nie zastanawia się, dlaczego nic się nie stało, jeśli nie widział, że przypadkowo wybrał niewłaściwy typ pliku podczas uruchamiania usługi.