24184

Ordner umbenennen per batch

geschlossengelöstFrageBatch, Shell Entwicklung
Hallo alle zusammen,

ich benötige mal Eure Hilfe.
Ich habe einen Ordner in dem sich Ordner befinden die bspw. wie folgt bezeichnet sind:
20061201 oder 20061202 usw.
Ich will eine Batchdatei schreiben mit der ich sagen kann - rename alle Ordner in dem Ordner nach dem Schema:
xxxx-xx-xx
Wie sag ich das mit dem Schema, geht das überhaupt?

Vorab Vielen herzlichen Dank
ThoNi
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 46553

Url: https://administrator.de/forum/ordner-umbenennen-per-batch-46553.html

Ausgedruckt am: 06.06.2025 um 11:06 Uhr

miniversum
miniversum 12.12.2006 um 12:15:36 Uhr
Goto Top
Solte in etwa so gehen:

@echo off
Setlocal EnableDelayedExpansion
FOR /F %%i in ('dir /b /a:D') do set Name=%%i && rename !Name! !Name:~0,4!-!Name:~4,2!-!Name:~6,2!

miniversum
24184
24184 12.12.2006 um 12:46:08 Uhr
Goto Top
Danke schön - das geht super.
Kannst Du mir den Ablauf noch kurz erläutern?
miniversum
miniversum 12.12.2006 um 15:09:52 Uhr
Goto Top
"@echo off" schaltet dir die Anzeige jeder Zeile aus.
"Setlocal EnableDelayedExpansion" brauchst du damit nach den set Name=%%i in der for schleife die Variable Name gleich benutzt werden kann.
Jetzt zu "FOR /F %%i in ('dir /b /a:D') do set Name=%%i && rename !Name! !Name:~0,4!-!Name:~4,2!-!Name:~6,2!" :
Der Befehl "dir /b /a:D" würde dir alle Ordner in diesem Verzeichnis auflisten. Durch die For schleife "FOR /F %%i in ('dir /b /a:D') do set Name=%%i" wird von dieser Auflistung Zeile für Zeile durgegangen und die Ordnernamen in der Variablen "Name" gespeichert. Duch das anschliesende "&& rename !Name! !Name:~0,4!-!Name:~4,2!-!Name:~6,2!" wird mit dieser Variablen der neue Name zusammengebaut und eben umbenannt. Dabei bedeutet "!Name:~0,4!" das er die ersten vier Zeichen der Variablen "Name" benutzt. "!Name:~4,2!" beinhaltet nur das 5. und 6. Zeichen und entsprechend "!Name:~6,2!" das 7. und 8. Zeichen.
Als Beispiel:
Name wäre 20061201:
!Name:~0,4! wäre 2006
!Name:~4,2! wäre 12
!Name:~6,2! wäre 01

das "!Name:~0,4!-!Name:~4,2!-!Name:~6,2!" setzt so also das ganze zu "2006-12-01" zusammen. Das ganze "rename !Name! !Name:~0,4!-!Name:~4,2!-!Name:~6,2!" benennt also in diesem Beispiel das "20061201" zu "2006-12-01" um. Und dies eben für jede Zeile der Auflistung.

Ich hofffe das war einigermasen verständlich erklärt.

miniversum
Biber
Biber 12.12.2006 um 15:47:13 Uhr
Goto Top
@miniversum

Ich hofffe das war einigermasen verständlich erklärt.
Ich als neutraler Beobachter finde es jedenfalls 5 Sterne und einen Grünen Haken wert.

Grüße
Biber
miniversum
miniversum 12.12.2006 um 16:40:20 Uhr
Goto Top
Danke.
miniversum
24184
24184 13.12.2006 um 10:03:44 Uhr
Goto Top
Einfach super,

Vielen herzlichen Dank
ThoNi