
68023
31.07.2008, aktualisiert am 01.08.2008
Batch Aktualisierung von Dateinamen
Hallo,
ich bedanke mich vorab für Tips zu folgendem Problem:
In einem Verzeichnis befinden sich Dateien wie [bezeichnung]_[jahr]_[monat].[dateiendung]
Meine Aufgabe ist es, die beiden Datumsangaben Jahr und Monat aktuell zu halten.
Ich bin leider nicht so trittsicher in Batch-Dateien. Alles was ich zu Stande bekommen habe ist,
dass nach einem festen Dateinamen gesucht wird und dieser um das Datum ergänzt wird:
Wie könnte ich
1) zunächst alle Dateinamen IN EINEM VERZEICHNIS nach "2008" durchsuchen
2) bei diesen Dateien den aktuellen Monat nicht anhängen sondern aktualisieren
Vielen lieben Dank
Nico
ich bedanke mich vorab für Tips zu folgendem Problem:
In einem Verzeichnis befinden sich Dateien wie [bezeichnung]_[jahr]_[monat].[dateiendung]
Meine Aufgabe ist es, die beiden Datumsangaben Jahr und Monat aktuell zu halten.
Ich bin leider nicht so trittsicher in Batch-Dateien. Alles was ich zu Stande bekommen habe ist,
dass nach einem festen Dateinamen gesucht wird und dieser um das Datum ergänzt wird:
@echo off
set Jahr=%date:~-4%
set Monat=%date:~-7,2%
ren data.xls "data_%Jahr%_%Monat.xls"
pause
Wie könnte ich
1) zunächst alle Dateinamen IN EINEM VERZEICHNIS nach "2008" durchsuchen
2) bei diesen Dateien den aktuellen Monat nicht anhängen sondern aktualisieren
Vielen lieben Dank
Nico
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 93317
Url: https://administrator.de/forum/batch-aktualisierung-von-dateinamen-93317.html
Ausgedruckt am: 21.05.2025 um 15:05 Uhr
6 Kommentare
Neuester Kommentar
Hallo prinzipal87 und willkommen im Forum!
Wie sehr kann man/frau sich darauf verlassen, dass alle Dateinamen aus den genannten Teilen, getrennt durch "_", bestehen? Wenn das gesichert wäre, müsste eigentlich
genügen.
Grüße
bastla
Wie sehr kann man/frau sich darauf verlassen, dass alle Dateinamen aus den genannten Teilen, getrennt durch "_", bestehen? Wenn das gesichert wäre, müsste eigentlich
@echo off & setlocal
set "Muster=*_2008_*.*"
set "Verz=D:\EIN VERZEICHNIS"
set Jahr=%date:~-4%
set Monat=%date:~-7,2%
for %%i in ("%Verz%\%Muster%") do for /f "delims=_" %%a in ("%%~ni") do ren "%%i" "%%a_%Jahr%_%Monat%%%~xi"
Grüße
bastla
Hallo prinzipal87!
Die Zeilen 21 bis 23 dürfen nicht aufgeteilt werden, sondern müssen (wie in meiner Zeile 8) nur durch Leerzeichen getrennt in der selben Zeile stehen.
Für Dein Add-On fehlt noch der eigentliche Zähler.
Noch eine Anmerkung zur Sicherheitsabfrage: Nur wenn "n" (klein geschrieben, nur ein Zeichen) eingegeben wird, erfolgt tatsächlich der Sprung zu ":END" - sicherer wäre etwa:
Damit würde die Bearbeitung nur bei Eingabe von "j" oder (wegen "/i") "J" erfolgen.
Beim Umbenennen muss zunächst die Datei (samt Pfad) angegeben werden - %%i - und danach nur der neue Name + Typ. Dieser neue Namen setzt sich zusammen aus: erster Teil des alten Namens (bis zum ersten "_") - %%a - den Trennzeichen "_" und Jahr und Monat. Da der Dateityp gleich bleiben soll, wird dieser mit "%%~xi" dem Dateipfad in %%i entnommen (inkl "." vor dem Typ).
[Edit] Zusammen mit der Ermittlung der Anzahl wäre der relevante Teil (ab Zeile 21) dann:
[/Edit]
Grüße
bastla
Ich versuche deine Code genau nachzuvollziehen
Der Versuch hat leider schon bei Deiner Zeile 15 geendet, wo, so wie auch in Zeile 16, ein überzähliges Anführungszeichen unmittelbar vor dem "=" steht.Die Zeilen 21 bis 23 dürfen nicht aufgeteilt werden, sondern müssen (wie in meiner Zeile 8) nur durch Leerzeichen getrennt in der selben Zeile stehen.
Für Dein Add-On fehlt noch der eigentliche Zähler.
Noch eine Anmerkung zur Sicherheitsabfrage: Nur wenn "n" (klein geschrieben, nur ein Zeichen) eingegeben wird, erfolgt tatsächlich der Sprung zu ":END" - sicherer wäre etwa:
set /p choice=j/n
if /i "%choice%" neq "j" goto :END
... steige aber nicht hinter die 2. FOR-Schleife sowie die REN-Zeile.
Mit der zweiten "for"-Schleife wird der Dateiname lt erster Schleife (%%~ni) - siehe dazu am Ende von "for /?" - anhand des Trennzeichens "_" einzelne Teile ("tokens") zerlegt. Da nur der erste Teil interessiert, kann die Angabe von "tokens=1" unterbleiben. Dieser erste Teil steht dann in %%a und wird im "ren"-Befehl verwendet.Beim Umbenennen muss zunächst die Datei (samt Pfad) angegeben werden - %%i - und danach nur der neue Name + Typ. Dieser neue Namen setzt sich zusammen aus: erster Teil des alten Namens (bis zum ersten "_") - %%a - den Trennzeichen "_" und Jahr und Monat. Da der Dateityp gleich bleiben soll, wird dieser mit "%%~xi" dem Dateipfad in %%i entnommen (inkl "." vor dem Typ).
[Edit] Zusammen mit der Ermittlung der Anzahl wäre der relevante Teil (ab Zeile 21) dann:
set /a Anzahl=0
for %%i in ("%Verzeichnis%\%Muster%") do for /f "delims=_" %%a in ("%%~ni") do ren "%%i" "%%a_%Jahr%_%Monat%%%~xi" && set /a Anzahl+=1
echo %Anzahl% Dateien geändert
Grüße
bastla