Der Finder – Dateien kopieren, umbenennen, Ordner überwachen

Der Finder ist das am meisten benutze Mac-Programm überhaupt. Der Finder selber wird oft als Betriebssystem bezeichnet, was aber eigentlich nicht richtig ist. Denn das Mac-Betriebssystem startet den Rechner und kontrolliert und koordiniert die einzelnen Mac-Hardware-komponenten.

Der Finder wird beim Hochfahren automatisch gestartet. Er ist aber ein separates Programm, welches alle Aufgaben der Dateiverwaltung übernimmt. Wenn man den Finder skripten möchte, so spricht man ihn immer als Programm an. Also man ruft ihn auf und übergibt ihm eine bestimmte Aufgabe.

Ein einfaches Finder-Skript sieht so aus:

Skript: Ordner anlegen:

tell application "Finder"

activate

make new folder at desktop with properties {name: "Toller neuer Ordner"}

end tell

Es wird auf dem Schreibtisch ein neuer Ordner angelegt.

 

tell application "Finder"

activate

set name of folder ("Mac23:Desktop Folder:Toller neuer Ordner" as alias) to "Besserer Ordnername"

end tell

Dieses Skript ändert den Namen eines Ordners auf der Festplatte. Es wird der Pfad zum Ordner angegeben. Dieser beginnt immer mit dem Volume-Namen, dann weitere Ordnernamen und zuletzt der Name des eigentlichen Ordners, der umbenannt werden soll. Als Trenner zwischen den Ordner- und Dateinamen steht immer ein Doppelpunkt.

Um auf Dateien und Ordner auf dem Schreibtisch zuzugreifen, muß man zuerst das Startvolume und dann den unsichtbaren Ordner "Desktop Folder" ansprechen. Darin enthalten sind alle Dateien, die auf dem Schreibtisch liegen.

Dies gilt nur für MacOS 9 und früher. Unter MacOS X hat jeder Benutzer einen eigenen Schreibtisch. Um den Ordnernamen auf dem Schreibtisch von MacOS X zu ändern, sollte man den Pfad wiefolgt eingeben :"Mac23:Users:admin:Desktop:Toller neuer Ordner".

 

Anzeigen aller Finder-Befehle

Um Euch die verfügbaren Befehle für den Finder anzeigen zu lassen, so öffnet einfach das Programm Finder im Systemordner über den ScriptEditor (Menü AblageVerzeichnis öffnen). Ihr erhaltet dann folgenden Bildschirm:

In der linken Fensterhälfte seht Ihr alle Befehle im Überblick. Wenn Ihr mit der Maus daraufklickt, erscheint rechts die genaue Befehlessyntax.

Aufgepasst: Um Dateien an den Finder zu übergeben (z.B. um diese zu öffnen) müßt Ihr den Pfad (z.B. "Mac23:PDF-Dateien:Anleitung.pdf") in ein Alias wandeln. Alias bedeutet, dass der Pfad vom Variablentyp Text in einen Dateipfad umgewandelt wird. Dabei werden Doppelpunkte als Ordner interpretiert. Doppelpunkte können in Dateinamen nicht vorkommen, da dieses Zeichen nicht erlaubt ist.

Andere Programme benötigen eine Pfadangabe unter Umständen nicht als Alias, sondern wirklich als Textvariable. Welcher Typ gerade benötigt wird, erkennt Ihr daran, dass hinter dem jeweiligen Befehl steht: "Alias" oder "String". Oben abgebildet seht Ihr die Befehlssyntax von Objekt "file".

 

Skript: Dateien öffnen

tell application "Finder"

activate

open document file ("Mac23:Bild 7" as alias)

end tell

Dieses Skript öffnet eine Datei, die auf der Festplatte namens "Mac23" liegt und "Bild 7" heißt. Dies ist in diesem Falle ein Screenshot, also wird die Datei in SimpleText geöffnet. Es ist egal, um was für eine Datei es sich hierbei handelt. Jede Datei hat in sich gespeichert, mit welchem Programm sie erzeugt wurde und wird auch wieder mit diesem Programm geöffnet. So können PDF-Dateien im Acrobat Reader, Textdateien in SimpleText, Word-Dokumente in Word usw. geöffnet werden.

Wenn Dateien mit einem speziellen Programm geöffnet werden sollen, so kann dies auch direkt mitgegeben werden. In diesem Falle würde das Skript so aussehen:

tell application "Finder"

activate

open document file ("Mac23:Bild 7" as alias) using application file ("Mac23:Applications (Mac OS 9):Adobe® Photoshop® 6.0:Adobe® Photoshop® 6.0.1")

end tell

Es wird dabei der Pfad der Software mitgegeben.

Generell sollten Dateien nicht vom PC erzeugt werden, da diesen Dateien wichtige Dateiinformationen fehlen. Unter Umständen kann es sonst zu Abstürzen kommen oder Programme nicht sauber laufen. Nur wenn Dateien von Mac-Programmen gespeichert werden, sind alle notwendigen Informationen wie das Erzeugerprogramm und dessen Programmversion enthalten. Dateiendungen sind am Mac nicht relevant. Mac-Dokumente brauchen keine Dateiendungen.

 

Skript: Dateien verschieben bzw. kopieren

tell application "Finder"

activate

move document file ("Mac23:Bild 7" as alias) to desktop

end tell

Die Datei "Bild 7" wird von der Festplatte auf den Schreibtisch (MacOS 9) verschoben. Verschoben wird nur, wenn die Datei auf dem gleichen Volume verbleibt.

Im Gegensatz dazu haben wir hier die Datei von der lokalen Platte auf ein Netzwerk-Volume verschoben. In diesem Fall ist das physische Speichermedium ein anderes, daher wird die Datei kopiert (obwohl wir den "Verschieben"-Befehl verwenden).

tell application "Finder"

activate

move document file ("Mac23:Bild 7" as alias) to folder ("Volume_A2:Zielordner:" as alias)

end tell

 

Um Dateien in jedem Fall zu kopieren, egal von wo nach wo kopiert wird, gibt es den Befehl "copy". In diesem Fall haben wir jetzt ein Duplikat auf dem Schreibtisch (MacOS 9) angelegt.

tell application "Finder"

activate

copy document file ("Mac23:Bild 7" as alias) to desktop

end tell

 

Skript: Dateien umbenennen

Um Dateien umzubenennen ändert man einfach die Dateieigenschaften. Diese können entweder der Name sein, das Icon oder sonstige Dateiinfos.

tell application "Finder"

activate

set name of document file ("Mac23:Bild 7" as alias) to "Testbild"

end tell

Wichtig ist hier, dass der Pfad auf eine Datei nicht mit einem Doppelpunkt abgeschlossen wird. Ein Doppelpunkt am Ende bezeichnet immer einen Ordner.

 

Skript: Dateien löschen

Dateien können ganz einfach gelöscht werden. Es gibt aber mehrere Möglichkeiten, wie man Dateien löscht. Einmal kann man sie einfach in den Papierkorb legen. Um die Datei dann unwiederbringlich zu löschen, kann man den Papierkorb leeren.

tell application "Finder"

activate

move document file ("Mac23:Bild 7" as alias) to trash

empty trash

end tell

Auch dieses Skript macht genau das gleiche.

tell application "Finder"

activate

delete document file ("Mac23:Bild 7" as alias)

empty trash

end tell

Wer mit Netzwerk-Volumes arbeitet, und hiervon Dateien löschen möchte, sollte einen "Network Trash" einrichten. Ansonsten ist es nicht möglich, eine Datei in den Papierkorb zu schieben. Es erscheint eine Meldung, die darauf hinweist, dass Dateien nur sofort gelöscht werden können. Unter UNIX-FileServern läßt sich der Network Trash einschalten. Alle Apple-Server-Systme (wie AppleShare IP oder MacOS X, auch das Personal FileSharing) beherrschen dies von Haus aus.

 

Skript: Ordner überwachen

Dieser Punkt ist etwas schwieriger zu realisieren. Stellt Euch vor, es gibt einen Ordner auf einem FileServer, in den jeder Netzwerk-Teilnehmer etwas hineinkopieren kann. Der Inhalt wird bearbeitet und in einen Ausgangsordner verschoben. Klingt sehr einfach, jeder denkt z.B. an PostScript-Dateien, die zum PDF gewandelt werden sollen. Oder Bilder, die mit Photoshop z.B. für das Internet gespeichert werden sollen.

Jetzt stellt Euch vor, das geht alles von alleine...vollautomatisch. Nicht möglich, meint Ihr ? Doch, genau das geht mit AppleScript. Anders als die Hot-Folder-Technologie von z.B. Acrobat Distiller arbeitet die AppleScript-Routine absolut fehlerfrei und handelt immer nur einen Job gleichzeitig ab.

 

Was wir machen, ist anschaulich eigentlich folgendes: Wir schreiben alle Namen der Dokumente des zu überwachenden Ordners in eine Liste. Enthält diese Liste eine Datei, so können wir einen Job zur Bearbeitung der Datei aufrufen: Zum Beispiel wird Photoshop aufgerufen, die jeweilige Datei geöffnet und diese als JPEG gespeichert. Anschließend wird die Datei in den Papierkorb gelegt.

Enthält die Liste mehrere Objekte, so wird diese so lange abgearbeitet, bis alle Dateien abgearbeitet wurden. Alle 60 Sekunden wird geschaut, ob es vielleicht wieder neue Dateien in dem Ordner gibt.

property Ordner : 0

property ZielOrdner : 0

-- In diesem Handler steht die Aktion, die auf eine
-- Datei angewandt werden soll

on DoDatei(Datei)

tell application "QuarkXPress Passport™ 5"

open Datei use doc prefs «constant KPRFyes » remap fonts no do auto picture import no

tell document 1

set back to front of print setup to true

print

close saving «constant KPRFyes » -- Änderung der Druckoptionen sichern

end tell

end tell

end DoDatei

-- Der Idle-Handler überprüft alle 60 Sekunden, ob
-- in den ausgewählten Ordner Objekte bewegt wurden
-- Falls ja, wird die Datei bearbeitet und dann in einen
-- anderen Ordner bewegt

on idle

tell application "Finder"

set dateiliste to every file of Ordner

end tell

if length of dateiliste > 0 then

repeat with i from 1 to length of dateiliste

DoDatei(item i of dateiliste)

tell application "Finder"

move item i of dateiliste to ZielOrdner

end tell

end repeat

end if

return 60 -- alle 60 Sekunden aufrufen

end idle

-- Der Open Handler wird nur gerufen, wenn Dateien auf
-- dieses Skript bewegt wurden

on quit

display dialog "Wirklich beenden?" buttons {"Abbrechen", "Skript beenden"} default button "Abbrechen"

if button returned of result = "Skript beenden" then

-- Hier können Abschlußarbeiten erfolgen

continue quit

end if

end quit

-- Dieser Handler wird ausgeführt, wenn das Skript mit
-- Doppelklick gestartet wird. Der Benutzer wählt einen
-- zu überwachenden Ordner aus

on run

if Ordner = 0 then

set Ordner to choose folder with prompt "Ordner überwachen:"

end if

if ZielOrdner = 0 then

set ZielOrdner to choose folder with prompt "Zielordner:"

end if

end run

In diesem Skript werden Quark XPress-Dokumente geöffnet, und gedruckt. Danach wieder geschlossen und in einen Ordner "Zielordner" verschoben. Darin sammeln sich alle Dateien, die bereits gedruckt wurden. Es ist wichtig, die bereits erledigten Dateien aus dem überwachten Ordner zu entfernen, da sonst immer wieder die gleiche Datei gedruckt wird, unendlich oft.

email-kontakt

 

Autor: Christian Abele