Hallo zusammen, hat jemand zufällig ein Script, das folgendes macht?: - Man zieht einen Ordner mit Dokumenten (z.B. Bilder oder Xpress-Dateien) auf ein Droplet - Das somit gestartete Script fragt nach der Präfix und beginnt die Dokumente umzubenennen und nach der Präfix einfach eine laufende Nummer (4-stellig mit führenden Nullen) anzuhängen. Vorher ist eine Prüfung mit der Suche nach der höchsten Nummer notwendig, mit dem entsprechendem Datenmuster. Letzteres muss nicht unbedingt sein. Der User kann ja einfach mal vorher prüfen, ob die Daten soweit passen. Wir müssen oft ganze Bildordner auf diese Weise umbennen. Das ist eine Sch.... Arbeit.
Hallo Hans, zum Beispiel von: DSCF1535.JPG DSCF1536.JPG DSCF1537.JPG DSCF1538.JPG
in Li_920_0015_b01.eps Li_920_0015_b02.eps Li_920_0015_b03.eps Li_920_0015_b04.eps
Ist aber anders, als mir erklärt wurde. Was das erste heisst, weiss ich nicht (LI_920_). Das muss einfach eingegeben werden können.
Der zweite Teil ist die 4-stellige Seitenzahl mit führenden Nullen (Das wurde mir verschwiegen; vielleicht hilft der Code vom Ordner umbenamen???) Muss aber nicht unbedingt sein; Kann auch vorne mit eingegeben werden.
Das nächste ist das b (Heisst einfach "bild") Dann kommt die Numerierung. Da die sich dafür entschiedenen haben, die Bilder nicht alle in einem Zug durchnumerieren zu zlassen, sondern auf Seiteneben, wird es nie mehr als 2-stellig sein. Auch hier braucht man die führende Null.
ja, das geht. Ist aber sehr ... abenteuerlich! Denn mit dem Ändern des Suffixes wird aus einer JPEG-Datei noch lange nicht ein EPS ...
Wenn ich alles richtig verstanden habe, dann hättest Du gerne ein Droplet. Sobald ein Ordner darauf gezogen wird, dann sollte ein Dialog dass Eingeben des Präfixes ermöglichen.
Und dann geht das Script durch die Namen der Dateien, zieht die Ziffern der Positionen 5 und 6 aus und setzt den neuen Namen zusammen und benennt die Datei um.
Fragen: Ist dies eine einmalige Aktion? Oder kommen später neue Dateien in den Ordner? Und muss dann die höchste Zahl festgestellt werden?
Hallo Hans, hab nicht auf die Endung geachtet. Vor der Umbenamung werden die Daten von jpg auf eps gewandelt. Richtig wäre gewesen: zum Beispiel von: DSCF1535.eps DSCF1536.eps DSCF1537.eps DSCF1538.eps
in Li_920_0015_b01.eps Li_920_0015_b02.eps Li_920_0015_b03.eps Li_920_0015_b04.eps
Ein Dropelt wäre wohl am sinnvollsten. Die Benamung wird nur 1 x durchgeführt. Also ist keine Überprüfung notwendig. Sollte nachträglich was kommen, wird zumindest das per Hand gemacht.
welche Enttäuschung! ;-) Keine Überprüfung notwendig?!? Der bisher höchste vergebene Numerierungswert muss nicht festgestellt werden? So ist die Aufgabe natürlich viel weniger anspruchsvoll ...
Das folgende Script – als Programm gesichert – ergibt ein Droplet, welches nur das erste Objekt behandelt. Es wird bewusst auf eine Wiederholungsschleife durch mehrere Ordner verzichtet. Diese müssten sortiert und der aktuelle Name angezeigt werden. Der Anwender dürfte die Präfixe nicht verwechseln.
Ganz verzichtet wird auf eine rekursive Behandlung, welche ein Gemisch von Ordnern und Dateien zulassen würde. Aber bei der vorliegenden Aufgabe macht dies keinen Sinn. --- -- 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 --die Zeichen des alten Präfixes zählen set nChars to count oldPref -- 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_") 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 -- die fixe Nummer ausziehen set fixNum to text nChars thru (nChars + 1) of fileName -- das Suffix speichern set aSuf to text -4 thru -1 of fileName -- den neuen Namen zusammensetzen set newName to aPref & "00" & fixNum & "_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 --- Es werden nur Dateien, welche mit "DSCF" beginnen, berücksichtigt. Die Suffixe werden nicht geprüft. Es werden die letzten drei Zeichen des Namens dafür eingesetzt
Falls es besser wäre, mehrere Ordner aufs Mal abzuarbeiten, wäre dies ohne grossen Aufwand möglich. Ich müsste aber konkrete Angaben haben, wie die Präfixe vergeben werden sollen und wie die Numerierung angebracht werden muss.
Hallo Hans, hab schon mal getestet und experimentiert. Ich finde nicht heraus, wie Du den Teil zwischen dem "_b" und der Präfix erzeugst. Das will die Kollegin mit in die Präfix schreiben.
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
Hallo Hans, t'schuldigung, dass ich mich jetzt erst melde. Vielen Dank für die Infos und die änderungen. Ich werd versuchen, mir das am Wochenende zu Gemüte zu führen. Bin im Moment auch noch Urlaubsvertretung und das in der "heissen" Phase...