Hallo Uwe,
okay, haben wir gleich. Ein Ordneraktions-Script, welches sich um hinzugefügte Dateien kümmern soll,
beginnt immer mit...
... wobei man anstelle von 'thisFolder' auch eine ander Bezeichnung setzen kann.
Damit die neu hinzugefügten Dateien von den schon vorhandenen unterschieden werden können, muss in der
ersten Zeile der Zusatz 'after receiving itemList' angehängt werden. Auch hier kann der Name der Variablen
anders lauten.
Diese Variable enthält eine Liste der Dateien, welche in den Ordner gelegt werden. Und zwar sind es Pfade
im Alias-Format, z.B. "alias "Macintosh HD:Desktop Folder:InFolder:Dateiname".
Im Script werden die Variablen 'ctr' und 'addOn' definiert. Die Zählervariable, um eventuelle Probleme melden
zu können und die zweite enthält den Zusatz.
In einer Repeat-Schleife wird die Alias-Liste abgearbeitet. Diese Aliasse müssen in Strings verwandelt werden
('set fullPath to (aFile as string)'), damit man den Pfad zur Datei und den Namen der Datei ausziehen kann.
Zuerst wird noch festgestellt, ob der Pfad mit einem Doppelpunkt endet. Dann wäre das Objekt ein Ordner und
wird ignoriert.
Anschliessend werden die 'text item delimiters' als Doppelpunkt definiert. Damit kann der Pfad in die
einzelnen Elemente aufgegliedert werden. Mit 'set filePath to text items 1 thru -2 of fullPath' wird der Pfad
bis und mit "Hotfolder" in die Variable 'filePath' gegeben. Und mit 'set oldName to text item -1 of fullPath'
wird das letzte (= -1) Element der Kette, der Dateiname gespeichert.
Wenn zwei Zeichen angehängt werden sollen, dann muss dieser Name kürzer als 30 Zeichen sein. Dies wird mit
'if (count oldName) < 30' geprüft. Falls okay, wird der neue Name und der neue komplette Pfad zusammengesetzt.
Im 'try/on error'-Block wird mit 'newPath as alias' geprüft, ob eine Datei mit diesem Namen schon existiert.
Wenn ja, wird die 'ctr'-Variable um eins erhöht und die alte Datei wird nicht umbenannt. Wenn noch keine Datei
mit dem neuen Namen existiert, dann wird ein Fehler generiert und das Script sagt dem Finder, dass er die
Datei umbenennen soll.
Am Schluss werden die 'text item delimiters' auf einen leeren String gesetzt. Wenn die Zählervariable 'ctr'
grösser als Null ist, dann wird mit einem Dialog die Anzahl Probleme angezeigt.
---
on adding folder items to thisFolder after receiving itemList
set ctr to 0
set addOn to "_N"
repeat with aFile in itemList
set fullPath to (aFile as string)
if fullPath ends with ":" then
else
set AppleScript's text item delimiters to {":"}
set filePath to text items 1 thru -2 of fullPath
set oldName to text item -1 of fullPath
if (count oldName) < 30 then
set newName to oldName & addOn
set newPath to (filePath & newName) as string
try
newPath as alias
set ctr to ctr + 1
on error
tell application "Finder" to set name of file fullPath to newName
end try
else
set ctr to ctr + 1
end if
end if
end repeat
set AppleScript's text item delimiters to {""}
if ctr > 0 then
display dialog "Anzahl Probleme: " & ctr buttons "OK" default button 1 with icon 2
end if
end adding folder items to
---
Dieses Script als normales, kompiliertes Script in einen Ordner (nicht in jenen, in welchen die Dateien, die umbenannt
werden sollen, gelegt werden) auf der Harddisk sichern.
Dann dem "Hotfolder" die Ordneraktion zuweisen: Die Control-Taste niederhalten, den Mauszeiger im Finder auf den
geschlossenen In-Ordner richten und die Maustaste betätigen. Im sich öffnenden Kontext-Menü die Zeile "Aktion an
Ordner anfügen..." auswählen. Darauf öffnet sich ein Dialogfenster, in welchem das Script ausgewählt werden muss.
Achtung: Damit das Ganze funktioniert, muss der In-Ordner geöffnet sein.
Hans Haesler, hsa@ringier.ch