Dateien umbenennen via Batch-Datei

Hallo!

Ich habe eine ganze Reihe von Bildern, die ich so im Laufe der Zeit mit meiner Handykamera gemacht habe.

Die Dateinamen dieser Bilder sind nach folgendem Schema aufgebaut: Tag-Monat-Jahr_Nummer.jpg, bspweise: 01-07-11_1018.jpg.

Dieser Aufbau des Namens ärgert mich aber, da Windows diese folglich automatisch nach Tagen ordnet.

Ich möchte alle diese Dateinamen also in folgendes Schema ändern: Jahr-Monat-Tag_Nummer.jpg, also bspweise: 11-07-11_1018.jpg.

Da das denke ich eine typische Aufgabe für die Stapelverarbeitung ist, habe ich versucht, mir dazu ein kleines bat-Skript zu schreiben. Leider aber funktioniert es nicht so wie gewollt.

Hier das Kernstück meines Ansatzes:
for %%i IN (*.jpg) DO (
set n=%%i
set t=%n:~0,2%
set m=%n:~3,2%
set j=%n:~6,2%
set r=%n:~9,4%
ren %%i %j%_%m%_%t%_%r%.jpg
)

Er soll für jedes Bild bestimmte fest definierte Teile des Namens in Variablen speichern und aus diesen Variablen dann den neuen Bildnamen zusammensetzen.

Aber leider werden die Variablen nicht gefüllt! Raus kommt etwa folgender Dateiname: ___.jpg.

Hat jemand eine Idee, wie man das Skript umschreiben müsste, damit es fehlerfrei funktioniert? Kann mir wer helfen?

Gruß fuenf_punkt_eins

Hi,

Kann mir wer helfen?

Nimm ein fertiges Programm dafür, z.B. IrfanView.
Das ist Freeware für den Privatgebrauch.

VG Berro

Hallo,
ich ich empfehle dir für dies Aufgabe eine spezielle Software, z.B. http://www.bulkrenameutility.co.uk/Main_Intro.php

Im ersten Moment ist zwar alles etwas verwirrend, also mal ein Testverzeichnis anlegen und damit üben. Nach Fertigstellung der Parametriermaske kannst du deine Einstellung speichern und immer wieder verwenden. Besonders interessant ist, dass du auch Exif-Informationen, z.B. das Erstelldatum, in den Dateinamen einbauen kannst (autodate). Damit kannst du dann deinen Datumsanteil des Namens ins richtige Lot bringen. Auch ist eine Neunummerierung möglich.

Hinweis: die voraussichtliche Änderung eines Filenamens wird erst dann sichtbar, wenn mindestens ein alter Filename angeklickt ist.

Viel Erfolg
Culles

Guten Tag,

Tut mir Leid. Ich wollte dieses Problem schon gerne mit einem eigens geschriebenen Batchprogramm lösen, das genau das macht, was ich ihm sage, nicht mehr, nicht weniger.
Außerdem möchte ich mich auch gerne ein wenig in die Batchprogrammierung hineindenken.

Also, wenn wer ne Idee hat und sich mit Batchprogrammierung auskennt, bitte ich um Hilfe.

Hallo.

Da das denke ich eine typische Aufgabe für die
Stapelverarbeitung ist, habe ich versucht, mir dazu ein
kleines bat-Skript zu schreiben.

Stimmt, finde ich auch.

Leider aber funktioniert es
nicht so wie gewollt.

Hier das Kernstück meines Ansatzes:
for %%i IN (*.jpg) DO (
set n=%%i
set t=%n:~0,2%
set m=%n:~3,2%
set j=%n:~6,2%
set r=%n:~9,4%
ren %%i %j%_%m%_%t%_%r%.jpg
)

Er soll für jedes Bild bestimmte fest definierte Teile des
Namens in Variablen speichern und aus diesen Variablen dann
den neuen Bildnamen zusammensetzen.

Aber leider werden die Variablen nicht gefüllt! Raus kommt
etwa folgender Dateiname: ___.jpg.

Hat jemand eine Idee, wie man das Skript umschreiben müsste,
damit es fehlerfrei funktioniert? Kann mir wer helfen?

Das Problem liegt darin, wie die cmd-Shell mit Variablen-Zuweisungen in for-Schleifen umgeht. Probier mal folgende Lösung:

setlocal
for %%i IN (\*.jpg) DO call :rename %%i
endlocal
goto :eof


> rename

set n=%1
set t=%n:~0,2%
set m=%n:~3,2%
set j=%n:~6,2%
set r=%n:~9,4%
echo ren %1 %j%\_%m%\_%t%\_%r%.jpg
goto :eof

Sebastian.

Nachtrag:

echo ren %1 %j%_%m%_%t%_%r%.jpg

Das sollte natürlich

ren %1 %j%\_%m%\_%t%\_%r%.jpg

heißen.

Sebastian.

kurz und prägnant? Flexible Renamer -> Google

Danke für den Tipp, aber wie vorher erklärt, war ich darauf aus, mir selbst ein Programm dafür zu schreiben, einfach weil ich gerne auch ein bisschen Batch-Programmierung lernen möchte.

Vielen, vielen dank! :smile:
Dein Algorithmus funktioniert wunderbar. Das erste Bild benennt er zwar irgendwie nicht um, aber das ist kein gravierender Fehler, das krieg ich hin.
Es ist mir nur immernoch ein Rätsel, wieso die Console meint, in For-Schleifen Variablen anders zu handhaben…
Aber danke für deine Hilfe. :smile: