24184
Goto Top

Ordner umbenennen per batch

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

Content-Key: 46553

Url: https://administrator.de/contentid/46553

Ausgedruckt am: 29.03.2024 um 06:03 Uhr

Mitglied: 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
Mitglied: 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?
Mitglied: 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
Mitglied: 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
Mitglied: miniversum
miniversum 12.12.2006 um 16:40:20 Uhr
Goto Top
Danke.
miniversum
Mitglied: 24184
24184 13.12.2006 um 10:03:44 Uhr
Goto Top
Einfach super,

Vielen herzlichen Dank
ThoNi