Seriennummer-Dateinamen um n erhöhen

bsecow

Aktives Mitglied
Thread Starter
Dabei seit
27.12.2005
Beiträge
345
Reaktionspunkte
19
Hi,

ich hab ein kleines Problem hier...
[unnötige Vorgeschichte, brauche ne Pause :O]
Hab ein Galeriescript, in dem ich bisher immer so speicherte, dass für jedes neue Album ein Ordner "Event1" usw. angelegt wird, und da beginnt die Nummerierung der Bilder jeweils von 1 an. War so schön übersichtlich, auch wenn es einiges mehr an Programmieraufwand erforderte, damit er immer richtig begann und bei gesperrten Datensätzen nicht total durcheinanderkam. Fragt mich nicht, warum ich das so gemacht hab. :x
Bisher hatte ich neue Alben und Bilder immer über phpMyAdmin verwaltet, weil ich noch nicht zur Erstellung einer Admin-Oberfläche kam.
Jetzt hab ich die Adminfunktionen soweit fertig, aber dann fiel mir auf: Es gibt keinen praktikablen Weg, dass das Script herausfindet, wie denn nun der Name sein muss (erst 100 Dateinamen auslesen und dann überprüfen, ob nicht noch ein gesperrter Datensatz hinterherkommt für jedes einzelne Bild wäre ja blöd).
Also Kommando zurück, ab jetzt werden die Bilder unter der Id aus der MySQL-Tabelle abgespeichert.
[/unnötige Vorgeschichte, brauche ne Pause :O]

Ich brauche nun eine Möglichkeit, die Dateinamen des Formates n.jpg (n von 1 bis unendlich theoretisch) so zu ändern, dass sie (n+x).jpg lauten. Also statt 2.jpg z.B. 102.jpg.
PS-Stapelverarbeitung schien erst wie dafür geschaffen, man kann ja schließlich den Startwert der Seriennummer angeben, aber dummerweise geht die nicht von 1 los und dann auf 2, 3, 4 usw., sondern schaut halt nur auf die Anfangsziffer, d.h. die Reihenfolge wird total verdreht (1, 10, 11 oder so).

Gibt's da ne Lösung per AppleScript? Habe davon leider nicht wirklich Ahnung, aber Dateinamen zerlegen, ersten Teil als int behandeln, Wert dazuaddieren und umbenannt in ein neues Verzeichnis ablegen müsste doch gehen, oder? :)

Hab hier nur bedingt Inet (Urlaub) und kann deshalb leider auch nicht so lange AppleScript-Tutorials durcharbeiten und herumcoden, bis ich das selber hinbekomm. Vielleicht gibt es aber ja schon eine fertige Lösung? :>

Danke und ciao,
BSECow

edit: Und ich hab zwar Urlaub, aber Zeit, um etwa 100 Dateien umzubennen hab ich leider nicht. ;)
 
hallo

bin mir zwar nicht sicher ob ich alles verstanden habe
aber das Tool "Renamer4Mac" sollte das alles können.
http://www.power4mac.com/renamer/

oder soll das immer wieder als AppleScript laufen bei gewissen Aktionen?
 
Eine Applescript Lösung kann ich Dir nicht anbieten.
In der Z Shell (im Terminal) geht es aber recht einfach:
Code:
zsh
autoload zmv
zmv '([[:digit:]]#).jpg' sub/`echo '$((\$1+10))'`.jpg

Kurze Erklärung:
Zeile 1: zsh starten
Zeile 2: zmv Modul laden
Zeile 3: alle Dateien der Form n.jpg im aktuellen Verzeichnis in (n+10).jpg umbenennen und ins Unterverzeichnis 'sub' verschieben.

Ich muss Dir allerdings dazu sagen, dass Du evtl. nicht gründlich genug nachgedacht hast und die resultierenden Dateinamen möglicherweise Deinen Erwartungen nicht vollständig enstprechen.
Das Abwandeln des obigen Kommandos ist aber einfach ;).
Du solltest Dir außerdem klarmachen, unter welchen Voraussetzungen Dateien am Zielort möglicherweise überschrieben werden (also: zumindest während der Testphase Sicherheitsbackup machen!).

HTH
 
Was es nicht alles gibt... :)

Von der Konzeption her passte das schon, hab dieses mal wirklich laaaange überlegt, um nicht schon wieder alles falsch zu machen in der Eile. ;)

Ich danke euch beiden... und werde mich zu Hause mal nach einem Buch umschauen, dass etwas "tiefergehende" Themen (für jemanden, dessen einzige Shell-Aktivität noch vor einem halben Jahr auf einem Webserver stattfand) behandelt. ;>
 
Oder wenn's weniger "Unix-kryptisch", mit AppleScript sein soll:
das folgende Skript kompilieren und als Anwendung/Droplet speichern. In jedem Ordner der auf sein Icon gezogen wird, werden dann die alten Dateinamen mit Nummern überschrieben, die Startnummer kannst Du selbst aussuchen...

Code:
on open thisFolder
	display dialog "Bitte die Startnummer für File-Nummerierung eingeben:" default answer 1
	set startNumber to text returned of the result as integer
	tell application "Finder"
		set thisFolder to thisFolder as alias
		set theFiles to every item of thisFolder
		repeat with aFile in theFiles
			set theExtension to name extension of aFile
			set newName to (startNumber & "." & theExtension) as string
			set name of aFile to newName
			set startNumber to startNumber + 1
		end repeat
	end tell
end open

Frohes scripten
Farid
 
Hi,

vielen Dank für diese Lösung. :)
 
Zurück
Oben Unten