Batch Umbenennen- alten Namen teilweise übernehmen, Leerzeichen im Namen
Hey,
ich würde gerne das beim umbenennen meines Ordners das Datum aus dem alten Namen übernommen wird.
Das ganze funktioniert auch ganz gut, nur sobald die Ursprungsdatei nicht "aktuelle_Sicherung..." sondern "aktuelle Sicherung...", also mit Leerzeichen, heißt, steht in der %%i Variable nur noch "aktuelle". Also findet der Befehl RENAME auch den entsprechenden Ordner nicht.
Gibt es hierfür eine Lösung?
\aktuelle Sicherung 12.12.2012\...
\aktuelle_Sicherung_12.12.2012\...
Liebe Grüße
ich würde gerne das beim umbenennen meines Ordners das Datum aus dem alten Namen übernommen wird.
Das ganze funktioniert auch ganz gut, nur sobald die Ursprungsdatei nicht "aktuelle_Sicherung..." sondern "aktuelle Sicherung...", also mit Leerzeichen, heißt, steht in der %%i Variable nur noch "aktuelle". Also findet der Befehl RENAME auch den entsprechenden Ordner nicht.
Gibt es hierfür eine Lösung?
\aktuelle Sicherung 12.12.2012\...
\aktuelle_Sicherung_12.12.2012\...
@echo off
Setlocal EnableDelayedExpansion
FOR /F %%i in ('dir /b "aktuelle Sicherung*"') do (
set Name=%%i && echo !Name! && rename !Name! alte_Sicherung_!Name:~19,10!
)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 76571
Url: https://administrator.de/contentid/76571
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo ebimail!
Da Leerzeichen (und Tab) als Standardtrennzeichen in einer "for /f"-Schleife gelten, musst Du explizit festlegen, dass kein Trennzeichen (delimiter) verwendet werden soll:
Grüße
bastla
Da Leerzeichen (und Tab) als Standardtrennzeichen in einer "for /f"-Schleife gelten, musst Du explizit festlegen, dass kein Trennzeichen (delimiter) verwendet werden soll:
FOR /F "delims=" %%i in ('dir /b "aktuelle Sicherung*"') do (
set Name=%%i && echo !Name! && rename !Name! alte_Sicherung_!Name:~19,10!
)
Grüße
bastla
Moin ebimail,
kleiner Nachtrag der Vollständigkeit halber.
Wenn die Namenskonventionen so sind und bleiben wie beschrieben, dann geht es kürzer.
Zwar nicht ohne FOR-Anweisung, aber ohne Zwischenvariablen.
Beispiel direkt vom CMD:
Ein @echo vor der simulierten Rename-Anweisung soll dem risikofreien Testen dienen.
Durch die DIR-Wildcards, die mir nur Verzeichnisse mit dem Aufbau "aktuelleSicherung-LEERZEICHEN-whatever" liefern, kann zwar eigentlich nichts schiefgehen, aber....
Friedliche und erholsame Weihnachtstage
Biber
kleiner Nachtrag der Vollständigkeit halber.
Wenn die Namenskonventionen so sind und bleiben wie beschrieben, dann geht es kürzer.
Zwar nicht ohne FOR-Anweisung, aber ohne Zwischenvariablen.
Beispiel direkt vom CMD:
for /f "tokens=1*" %i in ('dir /b /ad "aktuelleSicherung *"') do @echo Rename "%i %j" "olleSicherung %j"
Durch die DIR-Wildcards, die mir nur Verzeichnisse mit dem Aufbau "aktuelleSicherung-LEERZEICHEN-whatever" liefern, kann zwar eigentlich nichts schiefgehen, aber....
Friedliche und erholsame Weihnachtstage
Biber