Neuere Datei mit XCOPY Befehl finden und unter anderem Namen abspeichern
Hallo, Ich habe gerade angefangen mich mit der Batch Programmierung auseinander zu setzen und stosse noch auf ein paar kleine "Problemchen".
In der Hoffnung das mir hier ein wenig auf die Sprünge geholfen werden kann versuche Ich mal mein Problem zu schildern.
Ich möchte mit dem Befehl xcopy überprüfen, ob eine Datei neuer ist als die bereits vorhandene gesicherte Datei.
Nun möchte Ich aber die "ältere" Datei in meinem Sicherungsordner nicht einfach durch die "neuere" Datei aus meinem Quellverzeichniss ersetzen.
Es soll vor dem "erneuern" der Datei eine Kopie der neueren Datei mit dem Inidize [aktuelles Datum + aktuelle Zeit] versehen werden und im Sicherungsordner abgelegt werden.
Um es vieleicht ein wenig verständlicher Auszudrücken:
Im Sicherungsordner befindet sich die Datei: Irgendwas.tpg (letzte Änderung 31.02.1964)
Im Quellverzeichnis befindet sich die Datei: Irgendwas.tpg (letzte Änderung 12.03.1964)
Bevor die Datei im Sicherungordner nun durch die aktuellere Version ersetzt wird, soll eine Kopie der aktuelleren Datei mit dem Namen: Irgendwas.tpg_aktuelleDatum_aktuelle_Uhrzeit im Sicherungsordner abgelegt werden.
Wofür Ich das benötige? Ich möchte sozusagen eine Änderungshistorie einer Datei anlegen und nachvollziehen können was sich in den Dateien geändert hat.
Das würde mir die Fehlersuche in einem Programm wesentlich erleichtern.
Geht das überhaupt mit dem Befehl xcopy oder gibt es da eine sinnvollere Lösung? (Bitte beachten das Ich gerade erst mit Batch anfange
)
Vielen Dank im voraus.
Mfg
Astarot
In der Hoffnung das mir hier ein wenig auf die Sprünge geholfen werden kann versuche Ich mal mein Problem zu schildern.
Ich möchte mit dem Befehl xcopy überprüfen, ob eine Datei neuer ist als die bereits vorhandene gesicherte Datei.
Nun möchte Ich aber die "ältere" Datei in meinem Sicherungsordner nicht einfach durch die "neuere" Datei aus meinem Quellverzeichniss ersetzen.
Es soll vor dem "erneuern" der Datei eine Kopie der neueren Datei mit dem Inidize [aktuelles Datum + aktuelle Zeit] versehen werden und im Sicherungsordner abgelegt werden.
Um es vieleicht ein wenig verständlicher Auszudrücken:
Im Sicherungsordner befindet sich die Datei: Irgendwas.tpg (letzte Änderung 31.02.1964)
Im Quellverzeichnis befindet sich die Datei: Irgendwas.tpg (letzte Änderung 12.03.1964)
Bevor die Datei im Sicherungordner nun durch die aktuellere Version ersetzt wird, soll eine Kopie der aktuelleren Datei mit dem Namen: Irgendwas.tpg_aktuelleDatum_aktuelle_Uhrzeit im Sicherungsordner abgelegt werden.
Wofür Ich das benötige? Ich möchte sozusagen eine Änderungshistorie einer Datei anlegen und nachvollziehen können was sich in den Dateien geändert hat.
Das würde mir die Fehlersuche in einem Programm wesentlich erleichtern.
Geht das überhaupt mit dem Befehl xcopy oder gibt es da eine sinnvollere Lösung? (Bitte beachten das Ich gerade erst mit Batch anfange
Vielen Dank im voraus.
Mfg
Astarot
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 159517
Url: https://administrator.de/forum/neuere-datei-mit-xcopy-befehl-finden-und-unter-anderem-namen-abspeichern-159517.html
Ausgedruckt am: 22.04.2025 um 17:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo Astarot und willkommen im Forum!
Du kannst zwar "
aber da Du ja ohnehin auch den Timestamp benötigst, würde ich gleich das Änderungsdatum auslesen (in der Schreibweise für einen Batch, und deshalb mit verdoppelten Prozentzeichen für die Schleifenvariablen):
Wenn Du das auch für die Sicherungsdatei gemacht hast, lässt sich mit
der Vergleich durchführen - gleichzeitig hast Du auch schon den gesuchten Namenszusatz in %QuellDatum% (die Formatierung kannst Du ja ggf noch anpassen - wenn Du etwa zwischen Datum und Uhrzeit noch "_" einbaust und dies auch bei der Ermittlung des Datums der Sicherugsdatei machst, kannst Du den Vergleich immer noch durchführen).
Zum Nachlesen:
) ...
[Edit] Wenn mit
Als Alternative könntest Du auch zur Stringzerlegung nach dem Muster
greifen (siehe dazu "
BTW: Falls Du Dich fragst, warum ich nicht mit "
[/Edit]
Grüße
bastla
P.S.: Übrigens noch ein Glückwunsch - Raritäten wie Dateien mit Änderungsdatum "31.02.1964" hat nicht jeder (ja, ich weiß, 1964 war ein Schaltjahr
) ...
Du kannst zwar "
xcopy
" (mit den Schaltern "/dly") dazu verwenden, den Vergleich durchzuführen - zBxcopy /dly D:\Quellverzeichnis\Irgendwas.tpg D:\Sicherungsordner\|findstr /c:"1 Datei(en) kopiert">nul && echo ist neuer || echo ist nicht neuer
for %%i in ("D:\Quellverzeichnis\Irgendwas.tpg") do for /f "tokens=1-5 delims=.: " %%a in ("%%~ti") do set "QuellDatum=%%c%%b%%a%%d%%e"
if %QuellDatum% gtr %SicherungsDatum%
Zum Nachlesen:
for /?
(ist ein wenig länger, und Du musst bis zum Ende durch [Edit] Wenn mit
aktuelleDatum_aktuelle_Uhrzeit
tatsächlich der Zeitpunkt des Kopierens festgehalten werden soll, müsstest Du das Datum "%date%
" (oder, als Befehl: date /t
) bzw die Uhrzeit "%time%
" (oder time /t
) in die passende Form bringen (ich würde auf jeden Fall die Reihenfolge Jahr-Monat-Tag für das Datum wählen) - die Vorgangsweise kannst Du aus dem "for /f
" von oben ableiten.Als Alternative könntest Du auch zur Stringzerlegung nach dem Muster
set "Datum=%date:~-4%%date:~-7,2%%date:~-10,2%"
set /?
").BTW: Falls Du Dich fragst, warum ich nicht mit "
%date:~6,4%
" begonnen habe: Je nach Systemeinstellung kann uU vor dem Datum auch noch der Wochentag ausgegeben werden - wenn Du "von hinten" beginnst, ist zumindest dieser Faktor vom Tisch ...[/Edit]
Grüße
bastla
P.S.: Übrigens noch ein Glückwunsch - Raritäten wie Dateien mit Änderungsdatum "31.02.1964" hat nicht jeder (ja, ich weiß, 1964 war ein Schaltjahr
Hallo Astarot!
WIKI zwar nicht, aber Tutorials - für's erste einmal: Tutorial zur FOR-Schleife
Später kannst Du Dir dann zB Bibers Workshops ansehen ...
... und natürlich möglichst viele der Beiträge hier in der Rubrik "Batch & so 'n Zeug" zumindest überfliegen ...
Grüße
bastla
WIKI zwar nicht, aber Tutorials - für's erste einmal: Tutorial zur FOR-Schleife
Später kannst Du Dir dann zB Bibers Workshops ansehen ...
... und natürlich möglichst viele der Beiträge hier in der Rubrik "Batch & so 'n Zeug" zumindest überfliegen ...
Grüße
bastla