Führe applescript aus, ohne den Editor zu öffnen

22591
OscarRyz

Jedes Mal, wenn ich ein Applescript ausführen möchte, erscheint der Editor.

Gibt es eine Möglichkeit, es direkt auszuführen?

10

4 Antworten auf die Frage

17
Bruce McLeod

Wie das Skript gespeichert wird, hat einen großen Einfluss darauf, wie es in Mac OS X funktioniert. Es klingt, als würde Ihr Skript nur als Skript gespeichert. Dies ist der Grund, warum der Skript-Editor jedes Mal geöffnet wird, 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 reichen.

Die Schritte sind (im Editor)

Datei> Speichern unter> dann Dateiformat auf Anwendung setzen und dann speichern.

Link Text

Jetzt wird gefragt: "Drücken Sie auf" Ausführen "oder" Beenden, um den Vorgang zu beenden "... aber ich denke, das ist ein Skriptfehler! Vielen Dank OscarRyz vor 15 Jahren 0
Wenn Sie das Kontrollkästchen "Ausführen" aktivieren, wird die Aufforderung möglicherweise nicht angezeigt. Bruce McLeod vor 15 Jahren 1
Ich verstehe, dass das Kontrollkästchen Nur ausführen die spätere Bearbeitung des Skripts nicht zulässt. jtbandes vor 15 Jahren 0
@jtbandes ahhhh ... das macht Sinn Bruce McLeod vor 15 Jahren 0
* Wenn Sie den Code des Skripts jemals wieder sehen möchten, VERWENDEN SIE NICHT ** Run Only **! * Das Dialogfeld ** Run / Quit ** wird über die Option ** Startbildschirm ** aufgerufen. Ich habe manchmal festgestellt, dass es standardmäßig aktiviert ist, wenn ** Speichern unter ** in einer bereits gespeicherten Anwendung verwendet wird. Wählen Sie für Mac OS X vor Snow Leopard die Option ** Dateiformat: ** "Anwendungspaket", um maximale Kompatibilität (und minimale Ressourcen-Gabeln!) Zu gewährleisten. Snow Leopards „Anwendung“ ist ein Bundle. Sie haben lediglich den „Bundle“ -Teil des Namens gelöscht (und zusätzlich zur 32-Bit-Universal-Unterstützung aus früheren Releases x86-64-Unterstützung hinzugefügt). Chris Johnsen vor 15 Jahren 0
Bitte beachten Sie, dass in Yosemite die aktuelle Methode File -> Export ist. In der neuesten Version des AppleScript-Editors gibt es kein Dialogfeld "Speichern unter" mehr. anon58192932 vor 9 Jahren 2
5
jtbandes

Beim Speichern des Skripts können Sie "Anwendung" aus dem Dropdown-Menü "Dateiformat" auswählen. Dann können Sie es ausführen und können es trotzdem in den Skript-Editor ziehen, um das Skript zu öffnen. oder Sie können Nur ausführen wählen, damit die bearbeitbare Version nicht gespeichert wird.

Alternativ können Sie den osascriptBefehl in Terminal entweder als osascript /path/to/scriptoder verwenden osascript -e "a short script here".

1

Sie können das Skript auch in Ihrem Ordner ~ / Library / Scripts / Finder / ablegen und direkt über das Skriptmenü ausführen.

0
Jack Wu

Eine andere Möglichkeit besteht darin, einen Dienst in Automator zu erstellen, der den osascriptBefehl zum Ausführen einer .scpt-Datei im Finder verwendet.

(Ich verwende Automator nicht in englischer Sprache, daher könnte der Wortlaut nicht genau sein.)

  1. Starten Sie Automator
  2. Datei> Neu und wählen Sie Dienst
  3. Wählen Sie unter "Service akzeptiert:" "Datei oder Ordner" aus.
  4. Wählen Sie in "Location:" "Finder.app" aus.
  5. Suchen Sie nach "AppleScript ausführen" und ziehen Sie das Objekt auf die rechte Seite
  6. Geben Sie im Feld AppleScript ausführen den folgenden Code ein:

    on run  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. Datei> Speichern und geben Sie einen Namen wie "AppleScript ausführen"

  8. Jetzt können Sie im Finder mit der rechten Maustaste auf eine .scpt-Datei klicken und "AppleScript ausführen" auswählen, um das Skript auszuführen.

Referenz: Quelle der Subroutine - AppleScript: Essential Subroutinen

Ich sehe Probleme mit Ihrem AppleScript-Code. 1. Sie haben keine Fehlerbehandlung oder Code zum Überprüfen der ausgewählten Datei ist eine .scpt-Datei, bevor sie an `osascript` übergeben wird. Sie wurde nicht für die Verarbeitung codiert, wenn mehr als eine .scpt-Datei im Finder ausgewählt wird. 2. Es ist absolut nicht notwendig, eine solche Kodierung durchzuführen, wenn die folgende einzige Codezeile alles ersetzt, was Sie der Aktion "AppleScript ausführen" hinzugefügt haben. "do shell script" osascript "& zitierte Form des POSIX-Pfads von Eintrag 1 der Eingabe" Hier ein minimales Beispiel, um alles in Ihrem aktuellen AppleScript-Code zu ersetzen: https://paste.ee/p/XngKA user3439894 vor 6 Jahren 0
Im minimalen Beispiel könnte der if-Anweisungsblock mit einer `else`-Klausel erweitert werden, in der eine Meldung angezeigt wird, dass die ausgewählte Datei keine .scpt-Datei war. Auf diese Weise fragt sich der Benutzer nicht, warum nichts passiert ist, wenn er nicht gesehen hat, dass er versehentlich den falschen Dateityp ausgewählt hat, wenn der Dienst ausgeführt wird. user3439894 vor 6 Jahren 0