Dateinamen vergleichen und ggf. mit Datum Zeit erweitern
Hallo zusammen,
auf einem w2k3 System werden täglich neue Dateien abgelegt. Die neuen Dateien sollen im gleichen Verzeichnis mit aktuellem Datum sowie der Uhrzeit über einen geplanten Batch Job erweitert werden z. B. dateiA.txt in dateiA_Datum_Uhrzeit.txt.
Die Umbenennung funktioniert soweit, aber ich stehe weiter vor dem Problem, dass bei einem erneuten Aufruf der Batch, der Dateiname immer wieder um das aktuelle Datum sowie Uhrzeit erweitert wird - dateiA_Datum_Uhrzeit_Datum_Uhrzeit_Datum_Uhrzeit.txt …
Die Batch sieht so aus
@echo off
set mydate=%date:~-4%%date:~-7,2%%date:~-10,2%
set mytime=%time:~-11,2%%time:~-8,2%%time:~-5,2%
for /R D:\Incoming\ %%d IN (*.*) DO (
move %%d %%~dpnd_%mydate%_%mytime: =0%.txt
)
:exit
Wie könnte die Batch denn aussehen, wenn sie den Dateinamen vor der Erweiterung auf den String _Datum_Uhrzeit = z. B. „_20080807_213133“ überprüft bevor sie das aktuelle Datum&Uhrzeit einfügt?
Auf dem System darf ich nur mit w2k3 Boardmitteln arbeiten und von daher die Batch-Lösung. Ich habe bereits einige Beiträge gelesen aber leider kriege ich den Einstieg nicht so hin - vielen Dank in Voraus
auf einem w2k3 System werden täglich neue Dateien abgelegt. Die neuen Dateien sollen im gleichen Verzeichnis mit aktuellem Datum sowie der Uhrzeit über einen geplanten Batch Job erweitert werden z. B. dateiA.txt in dateiA_Datum_Uhrzeit.txt.
Die Umbenennung funktioniert soweit, aber ich stehe weiter vor dem Problem, dass bei einem erneuten Aufruf der Batch, der Dateiname immer wieder um das aktuelle Datum sowie Uhrzeit erweitert wird - dateiA_Datum_Uhrzeit_Datum_Uhrzeit_Datum_Uhrzeit.txt …
Die Batch sieht so aus
@echo off
set mydate=%date:~-4%%date:~-7,2%%date:~-10,2%
set mytime=%time:~-11,2%%time:~-8,2%%time:~-5,2%
for /R D:\Incoming\ %%d IN (*.*) DO (
move %%d %%~dpnd_%mydate%_%mytime: =0%.txt
)
:exit
Wie könnte die Batch denn aussehen, wenn sie den Dateinamen vor der Erweiterung auf den String _Datum_Uhrzeit = z. B. „_20080807_213133“ überprüft bevor sie das aktuelle Datum&Uhrzeit einfügt?
Auf dem System darf ich nur mit w2k3 Boardmitteln arbeiten und von daher die Batch-Lösung. Ich habe bereits einige Beiträge gelesen aber leider kriege ich den Einstieg nicht so hin - vielen Dank in Voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 93923
Url: https://administrator.de/forum/dateinamen-vergleichen-und-ggf-mit-datum-zeit-erweitern-93923.html
Ausgedruckt am: 23.04.2025 um 06:04 Uhr
3 Kommentare
Neuester Kommentar
Hallo Dino2002 und willkommen im Forum!
Soferne Du hinsichtlich des Dateinamensformates "Name_Datum_Zeit" sicher sein kannst, müsste es ja genügen, vor dem Umbenennen zu überprüfen, ob der Name bereits das heutige Datum (soferne nicht auch ältere Dateien zu berücksichtigen wären) enthält (die Zeit ändert sich ja bei jedem Durchlauf):
Das Umwandeln ev in %mytime% enthaltener Leerzeichens in "0" braucht eigentlich nur einmal (vor der Schleife) zu erfolgen, und mit den Anführungszeichen um Dateinamen/Pfade herum erfolgt eine Absicherung gegen Probleme wegen ev darin enthaltener Leerzeichen.
Willst Du übrigens wirklich allen Dateien den Typ ".txt" geben, egal, welchen sie vorher hatten? Falls nicht, wäre ".txt" durch "%%~xd" zu ersetzen.
Nachtrag: Noch sicherer (unter der Voraussetzung, dass nur bereits mit dem Datums- / Uhrzeitzusatz versehene Dateien den Namensbestandteil "_20" [damit sollte es bis zum Ende des Jahrhunderts funktionieren
] enthalten) wäre:
Grüße
bastla
Soferne Du hinsichtlich des Dateinamensformates "Name_Datum_Zeit" sicher sein kannst, müsste es ja genügen, vor dem Umbenennen zu überprüfen, ob der Name bereits das heutige Datum (soferne nicht auch ältere Dateien zu berücksichtigen wären) enthält (die Zeit ändert sich ja bei jedem Durchlauf):
@echo off & setlocal
set "mydate=%date:~-4%%date:~-7,2%%date:~-10,2%"
set "mytime=%time:~-11,2%%time:~-8,2%%time:~-5,2%"
set "mytime=%mytime: =0%"
for /R D:\Incoming\ %%d IN (*.*) DO (
for /f "tokens=2 delims=_" %%i in ("%%~nd") do (
if "%%i" neq "%mydate%" move "%%d" "%%~dpnd_%mydate%_%mytime%.txt"
)
)
Willst Du übrigens wirklich allen Dateien den Typ ".txt" geben, egal, welchen sie vorher hatten? Falls nicht, wäre ".txt" durch "%%~xd" zu ersetzen.
Nachtrag: Noch sicherer (unter der Voraussetzung, dass nur bereits mit dem Datums- / Uhrzeitzusatz versehene Dateien den Namensbestandteil "_20" [damit sollte es bis zum Ende des Jahrhunderts funktionieren
@echo off & setlocal
set "mydate=%date:~-4%%date:~-7,2%%date:~-10,2%"
set "mytime=%time:~-11,2%%time:~-8,2%%time:~-5,2%"
set "mytime=%mytime: =0%"
for /R D:\Incoming\ %%d IN (*.*) DO (
echo %%~nd|findstr "_20">nul || move "%%d" "%%~dpnd_%mydate%_%mytime%.txt"
)
Grüße
bastla