Hallo Gerd,
das Script sollte die Ziffern der Positionen 5 und 6 aus des alten Dateinamens ausziehen. Die Variable
'nChars' ist die Anzahl der Zeichen des "alten" Präfixes, welches mit "DSCF" definiert ist. Aber oben
im geposteten Code habe ich beim Einsetzen der Variablen nicht aufgepasst. Anstatt ...
... muss der Befehl so lauten:
Wenn aber diese beiden Ziffern nicht per Script dem alten Dateinamen entnommen werden sollen, sondern
im Präfix-Dialog eingetippt werden müssen, dann muss man den Default-Text des Dialogs ändern, die Zeichen
des alten Präfixes müssen nicht gezählt und der neue Name kann einfacher zusammengesetzt werden.
Hier ist das gesamte, entsprechend korrigierte Script:
---
-- das "alte" Präfix (kann hier geändert werden)
property oldPref : "DSCF"
-- einen Dialog zeigen, falls der Anwender einen Doppelklick auf das Droplet macht
on run
display dialog "Einen Ordner, welcher die Bild-Dateien
enthält, auf das Icon dieses Droplets ziehen." buttons "OK" default button 1 with icon 0
end run
-- der 'open' Handler, welcher auf das Fallenlassen von Objekten reagiert
on open allObjects
set ctr to 0
-- den Doppelpunkt als Texttrenner definieren, damit der Name der Dateien ausgezogen werden kann
set AppleScript's text item delimiters to {":"}
-- der Pfad des ersten Objekts wird in einen String verwandelt
set objectPath to item 1 of allObjects as string
-- wenn der Pfad mit einem Doppelpunkt endet, ist es ein Ordner
if objectPath ends with ":" then
-- das Präfix verlangen
set okay to false
repeat while okay is false
set aPref to text returned of (display dialog "Präfix eingeben" default answer "Li_920_0015")
set okay to true
if aPref contains ":" or aPref contains "/" then
display dialog "Ordnernamen dürfen keinen Doppelpunkt enthalten (und Bruchstriche sollten vermieden werden)." buttons ¬
"OK" default button 1 with icon 2
set okay to false
end if
end repeat
-- den Dateizähler initialisieren
set fCtr to 0
-- die Liste der Objekte wird erstellt (ohne unsichtbare Dateien)
set contentsList to list folder objectPath without invisibles
-- Wiederholungsschleife durch die Liste der Namen
repeat with fileName in contentsList
-- wenn der aktuelle Name mit dem alten Präfix beginnt ...
if fileName starts with oldPref then
-- den Pfad der aktuellen Datei zusammensetzen
set aFile to (objectPath & fileName)
-- die Variable 'newName' als leer definieren
set newName to ""
-- den Dateizähler hochzählen
set fCtr to fCtr + 1
-- den Wert mit führender Null versehen
set varNum to text -2 thru -1 of ("0" & fCtr)
try
-- das Suffix speichern
set aSuf to text -4 thru -1 of fileName
-- den neuen Namen zusammensetzen
set newName to aPref & "_b" & varNum & aSuf
end try
-- wenn alles geklappt hat, dann ...
if newName is not "" then
try
-- ... versuchen, die aktuelle Datei umzubenennen
tell application "Finder" to set name of file aFile to newName
on error
-- wenn dies nicht möglich ist, den Wert des Zählers erhöhen
set ctr to ctr + 1
end try
end if
end if
end repeat
end if
-- den Textelement-Trenner wieder auf den Vorgabe-Wert (= leerer String) zurücksetzen
set AppleScript's text item delimiters to {""}
-- wenn der Wert der Zählers 'ctr' Null ist, einen Dialog zeigen: die Script-Aktion ist fertig
-- sonst anzeigen, wieviele Dateien nicht umbenannt werden konnten
if ctr is 0 then
display dialog "Fertig." buttons "OK" default button 1 giving up after 1
else
display dialog "Nicht umbenannte Dateien: " & ctr & "
(Konflikt: identische Namen)." buttons "OK" default button 1 with icon 2
end if
end open ---
Gruss, Hans