Antworten:
Wie das Skript gespeichert wird, hat einen großen Einfluss auf die Funktionsweise unter Mac OS X. Es klingt so, als ob Ihr Skript nur als Skript gespeichert wird. Daher wird der Skripteditor jedes Mal geöffnet, wenn Sie das Skript öffnen.
Um das Problem zu lösen, öffnen Sie das Skript im AppleScript-Editor und speichern Sie es als Anwendung. Das sollte zum Trick.
Die Schritte sind (im Editor)
Datei> Speichern unter> Setzen Sie das Dateiformat auf Anwendung und speichern Sie es.
Beim Speichern des Skripts können Sie "Anwendung" aus der Dropdown-Liste "Dateiformat" auswählen. Dann können Sie es ausführen und es trotzdem in den Skript-Editor ziehen, um das Skript zu öffnen. oder Sie können Nur ausführen auswählen, damit die bearbeitbare Version nicht gespeichert wird.
Alternativ können Sie den osascript
Befehl im Terminal entweder als osascript /path/to/script
oder verwenden osascript -e "a short script here"
.
Sie können das Skript auch in Ihrem Ordner ~ / Library / Scripts / Finder / ablegen und direkt über das Menü Skript ausführen.
Eine andere Möglichkeit besteht darin, einen Dienst in Automator zu erstellen, der mit dem osascript
Befehl eine .scpt-Datei im Finder ausführt.
(Ich verwende Automator nicht auf Englisch, daher ist der Wortlaut möglicherweise nicht korrekt.)
Geben Sie im Feld AppleScript ausführen den folgenden Code ein:
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
Datei> Speichern und geben Sie ihm einen Namen wie "AppleScript ausführen".
Jetzt können Sie mit der rechten Maustaste auf eine .scpt-Datei im Finder klicken und "AppleScript ausführen" auswählen und sehen, wie Ihr Skript ausgeführt wird.
Referenz: Quelle des Unterprogramms - AppleScript: Wesentliche Unterprogramme
osascript
und haben sie nicht codiert, um zu behandeln, wenn im Finder mehr als eine .scpt-Datei ausgewählt ist. 2. Es ist absolut nicht erforderlich, eine solche Codierungs-Rigmarole zu durchlaufen, wenn die folgende einzelne Codezeile alles ersetzt, was Sie der Aktion "AppleScript ausführen" hinzugefügt haben. do shell script "osascript " & quoted form of POSIX path of item 1 of input
Hier ist ein minimales Beispiel, um alles in Ihrem aktuellen AppleScript-Code zu ersetzen: paste.ee/p/XngKA
if
Anweisungsblock mit einer else
Klausel erweitert werden, die eine Meldung anzeigt, dass die ausgewählte Datei keine .scpt-Datei war. Auf diese Weise wundert sich der Benutzer nicht, warum nichts passiert ist, wenn er nicht gesehen hat, dass er beim Ausführen des Dienstes versehentlich den falschen Dateityp ausgewählt hat.