CLI-Programme via Automator als Dienst (CTRL+Click) einbinden

T

terz3

unregistriert
Thread Starter
Dabei seit
11.01.2015
Beiträge
449
Reaktionspunkte
144
Einen Beitrag hier im Forum nutzend habe ich versucht das eine oder andere CLI-Programm einzubinden so dass man z.B. mittels Rechtsklick (oder CTRL+Klick) auf einen Ordner oder eine Datei diesen Order bzw. diese Datei im Terminal als Zip (oder als Rar) im gleichen Ordner packen kann. Die ganze Ausgabe erfolgt in einem neuen Fenster im Terminal so dass man gerade bei längeren Prozessen sehen kann was gerade passiert.

1. Automator starten und "Dienst" auswählen.
2. Unter Bibliothek "Dienstprogramme" auswählen und auf "Applescript ausführen" doppelklicken.
3. Den ganzen Text "on run ... end run" markieren, löschen und folgenden Code einfügen.

Code:
on run {input, parameters}
    try
        set theItems to input
        repeat with currentItem in theItems
            tell application "Finder"
                set filename to quoted form of ((name of currentItem) as text)
                set pathToFile to quoted form of (POSIX path of (parent of currentItem as text))
            end tell
            
            tell application "Terminal"
                [B]do script "cd " & pathToFile & "; " & "zip -r -9 " & filename & ".zip " & filename & " -x *.DS_Store"[/B]
            end tell
        end repeat
    end try
    return filename
end run
4. Oberhalb des Bereichs in dem die Script-Eingabe erfolgt wählt man unter "Dienst empfängt ausgewählte(n)" die Auswahl "Dateien oder Ordner" in "Finder" aus.
5. Unter Ablage sichern auswählen und einen Namen auswählen, z.B. "Komprimieren mit ZIP".
6. Jetzt kann man im Finder mit Rechtsklick auf die Datei/den Ordner und Auswahl von "Komprimieren mit ZIP" (unter Dienste) die Datei/den Ordner komprimieren. Im Terminal wird dann in den entsprechenden Ordner gewechselt und dort das Archiv erstellt.

Man kann mehrere Ordner/Dateien auswählen und es werden dann für jede ausgewählte Datei bzw. jeden gewählten Ordner ein eigenes Archiv erstellt. -9 gibt an dass besser komprimiert werden soll, mit -x und dem String werden die entsprechenden Dateien (in diesem Fall .DS_Store) ausgeschlossen, -r gibt an dass auch in Unterordern geschaut wird.

Will man jetzt andere CLI-Programme (rar, ffmpeg, pigz, ...) nutzen, die entsprechende Binary nach /usr/local/bin kopieren, in Automator unter Ablage "Duplizieren" auswählen, umbenennen und einfach die hervorgehobene Zeile ändern/anpassen.

Komprimierung mit rar (-mt2 - die Zahl gibt an wie viele Kerne genutzt werden sollen, -m5 - maximale Kompression)
Code:
do script "cd " & pathToFile & "; " & "rar a -mt2 -m5 " & filename & ".rar " & filename

Entpacken mit rar
Code:
do script "cd " & pathToFile & "; " & "rar x " & filename

Der Vorteil dieser Lösung ist dass man den Vorgang mit CTRL+C abbrechen und danach die Kommandozeile modifizieren kann. Die Anleitung erscheint lang und aufwändig, ist aber in 1 Minute erstellt und danach kann man damit sehr sinnvoll arbeiten. Anregungen/Verbesserungen sind absolut willkommen.
 
  • Gefällt mir
Reaktionen: Badoshin, Meilenstein und X-File
Ein kleine Korrektur da bei der Umstellung auf die neue Forensoftware sich offensichtlich ein Fehler eingeschlichen hat, da es in der code-Umgebung kein Bold-Zeichensatz mehr zu geben scheint die entsprechende Formatierung dann aber als Text übernommen wurde. Daher hier die bereinigte Version.

Code:
on run {input, parameters}
    try
        set theItems to input
        repeat with currentItem in theItems
            tell application "Finder"
                set filename to quoted form of ((name of currentItem) as text)
                set pathToFile to quoted form of (POSIX path of (parent of currentItem as text))
            end tell

            tell application "Terminal"
                do script "cd " & pathToFile & "; " & "zip -r -9 " & filename & ".zip " & filename & " -x *.DS_Store"
            end tell
        end repeat
    end try
    return filename
end run
 
  • Gefällt mir
Reaktionen: Badoshin
Zurück
Oben Unten