Robocopy - Nur geänderte o.neue Dateien mit Datumstruktur
Hallo!
Ich habe mich bereits mehrere Stunden durch das Internet gekämpft und nicht wirklich etwas praktikables gefunden. Ich suche eine Möglichkeit um bei Robocopy geänderte oder neue Dateien in einen Ordner mit der Variable "%datum%" zu kopieren.
Mein Skript sieht momentan so aus:
Wenn ich jedoch nun Beispielsweise eine Datei vom 28.06.2018 habe, so landet diese bei der Sicherung in dem Ordner am selben Tag im Ordner "28.06.2018". Führe ich die Sicherung jedoch heute, am 29.06.2018 aus, so landet die Datei jedoch auch im Ornder "29.06.2018", obwohl sie seit dem 28.06.2018 nicht mehr bearbeitet worden ist. Das Skript soll jedoch so funktionieren, dass nur neu erstelle oder geänderte Dateien in den Ordner mit dem Datum an dem Sie erstellt/geändert worden sind, und nicht noch die Altlast von mehreren Tagen zuvor mit kopieren.
Habe ich einen Denkfehler in meinem Skript, oder ein Parameter vergessen? Ich kenne mich mit Skripten leider nicht so aus, es währe schön wenn jemand weiß wie es funktioniert das Skript vollständig funktionsfähig in einen Code zu kopieren.
LG
Ich habe mich bereits mehrere Stunden durch das Internet gekämpft und nicht wirklich etwas praktikables gefunden. Ich suche eine Möglichkeit um bei Robocopy geänderte oder neue Dateien in einen Ordner mit der Variable "%datum%" zu kopieren.
Mein Skript sieht momentan so aus:
@echo off
set datum=%date%
set source01="\\SERVER-01\Daten$"
set target01="D:\Backups\%datum%"
set logfile="D:\Backups\logs\robocopy_log_%datum%.txt"
robocopy %source01% /A /S %target01% -a /s /e /XD /XO "\\SERVER-01\Daten$\WSUS" /COPY:DAT /LOG:%logfile%
echo Sicherung abgeschlossen!
shutdown.exe /s-
Wenn ich jedoch nun Beispielsweise eine Datei vom 28.06.2018 habe, so landet diese bei der Sicherung in dem Ordner am selben Tag im Ordner "28.06.2018". Führe ich die Sicherung jedoch heute, am 29.06.2018 aus, so landet die Datei jedoch auch im Ornder "29.06.2018", obwohl sie seit dem 28.06.2018 nicht mehr bearbeitet worden ist. Das Skript soll jedoch so funktionieren, dass nur neu erstelle oder geänderte Dateien in den Ordner mit dem Datum an dem Sie erstellt/geändert worden sind, und nicht noch die Altlast von mehreren Tagen zuvor mit kopieren.
Habe ich einen Denkfehler in meinem Skript, oder ein Parameter vergessen? Ich kenne mich mit Skripten leider nicht so aus, es währe schön wenn jemand weiß wie es funktioniert das Skript vollständig funktionsfähig in einen Code zu kopieren.
LG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 378648
Url: https://administrator.de/forum/robocopy-nur-geaenderte-o-neue-dateien-mit-datumstruktur-378648.html
Ausgedruckt am: 12.04.2025 um 21:04 Uhr
10 Kommentare
Neuester Kommentar
Hi,
das kannst Du mit Robocopy so nicht umsetzen.
... liefert immer jenes Datum, an welchem diese Batch ausgeführt wird. Da gibt es überhaupt keine Relation zum Datum der zu kopierenden Dateien.
Sowas würde ich mit PowerShell umsetzen.
Aber: Warum willst Du das denn so machen? Welchen Sinn soll das haben? Etwa ein Versionierung der Dateien?
E.
das kannst Du mit Robocopy so nicht umsetzen.
set datum=%date%
Sowas würde ich mit PowerShell umsetzen.
Aber: Warum willst Du das denn so machen? Welchen Sinn soll das haben? Etwa ein Versionierung der Dateien?
E.
Moin,
ich würde da auch die Powershell bemühen. Da gibt es z. B. beim Dateiobjekt die Eigenschaft LastWriteTime, nach der sich einfach filtern lässt, um die Dateien in den richtigen Ordner zu plazieren. Unter der Kommandozeile wird Dir nichts anderes übrig bleiben, als mit dir Dir die Information bei jeder einzelnen zu holen, das Datum aus dem String auszulesen und so die Datei in den Ordner zu praktizieren. Wie das geht, steht hier.
https://it-stack.de/02/10/2009/dateidatum-per-batch-auslesen/
hth
Erik
ich würde da auch die Powershell bemühen. Da gibt es z. B. beim Dateiobjekt die Eigenschaft LastWriteTime, nach der sich einfach filtern lässt, um die Dateien in den richtigen Ordner zu plazieren. Unter der Kommandozeile wird Dir nichts anderes übrig bleiben, als mit dir Dir die Information bei jeder einzelnen zu holen, das Datum aus dem String auszulesen und so die Datei in den Ordner zu praktizieren. Wie das geht, steht hier.
https://it-stack.de/02/10/2009/dateidatum-per-batch-auslesen/
hth
Erik
Moin,
wenn Du anfängst zu lernen, dann vergiss die Commandshell und lerne gleich Powershell.
<edit2>Die Powershell kannst Du unter Win7 aktualisieren. Bei MS steht, wie das geht. Einfach mal danach googeln.</edit2>
<edit>Der hat nur den ersten Satz gesichert. Also nochmal
Wenn Ihr täglich ein Backup macht, dann ist doch alles ok. Die Dateien, die am 29ten geändert wurden, landenim Ordner vom 28ten, auch wenn das Erstelldatum der 28te ist.
BTW: Ich hoffe, das ist nicht das ganze Backupkonzept.
Liebe Grüße
Erik</edit>
wenn Du anfängst zu lernen, dann vergiss die Commandshell und lerne gleich Powershell.
<edit2>Die Powershell kannst Du unter Win7 aktualisieren. Bei MS steht, wie das geht. Einfach mal danach googeln.</edit2>
<edit>Der hat nur den ersten Satz gesichert. Also nochmal
Wenn Ihr täglich ein Backup macht, dann ist doch alles ok. Die Dateien, die am 29ten geändert wurden, landenim Ordner vom 28ten, auch wenn das Erstelldatum der 28te ist.
BTW: Ich hoffe, das ist nicht das ganze Backupkonzept.
Liebe Grüße
Erik</edit>
Hallo,
Word-Dateien von M: nach X: kopieren, die maximal 1 Tag alt sind.
Fuer Beispiele wie man Robocopy einsetzt gibt es genuegend Seiten. Eine davon ist diese hier:
https://social.technet.microsoft.com/wiki/contents/articles/1073.robocop ...
Schau Dir da mal #7 an.
Weiterhin findest Du auch hier bei Administrator.de viele Loesungen zu robocopy. Einer davon ist dieser.
Neueste Dateien Per Batch kopieren
Wie und wo müsste ich denn bei robocopy die Befehle hinzufügen bzw. ergänzen?
Word-Dateien von M: nach X: kopieren, die maximal 1 Tag alt sind.
robocopy "M:\" "X:\" *.docx /copyall /maxage:1
Fuer Beispiele wie man Robocopy einsetzt gibt es genuegend Seiten. Eine davon ist diese hier:
https://social.technet.microsoft.com/wiki/contents/articles/1073.robocop ...
Schau Dir da mal #7 an.
Weiterhin findest Du auch hier bei Administrator.de viele Loesungen zu robocopy. Einer davon ist dieser.
Neueste Dateien Per Batch kopieren
Aufpassen, dieser Vorschlag ist u.U. "gefährlich". Technisch sicherlich korrekt.
Wenn man mal 2 Tage lang nicht kopiert, dann gehen einem die Änderungen von >1 Tag (um beim Bsp. zu bleiben) damit verloren. So, wie ich Backup verstehe, ergibt sich eine relevante Änderung nicht aus dem Dateidatum sondern aus dem Vergleich, welchen Stand ich bereits im Backup habe und welchen nicht.
@c0d3.r3d
Wenn Du Dich von der Zielsetzung verabschiedest, dass Änderungen vom Tag X im Ordner "Änderungen vom Tag X" landen sollen, und statt dessen besser nimmst, dass Änderungen im Ordner "Tag der Kopie" landen, dann kannst Du einfach nach dem A-Attribut kopieren und dieses anschließend löschen. Dieses Verfahren ist uralt und funktioniert solange, wie der kopierende Benutzer die Dateiattribute der Quelldateien ändern darf. Aber wenn Du das mit Robocopy machst, dann musst Du hier den "/M" Parameter nehmen und nicht "/A".
Wenn man mal 2 Tage lang nicht kopiert, dann gehen einem die Änderungen von >1 Tag (um beim Bsp. zu bleiben) damit verloren. So, wie ich Backup verstehe, ergibt sich eine relevante Änderung nicht aus dem Dateidatum sondern aus dem Vergleich, welchen Stand ich bereits im Backup habe und welchen nicht.
@c0d3.r3d
Wenn Du Dich von der Zielsetzung verabschiedest, dass Änderungen vom Tag X im Ordner "Änderungen vom Tag X" landen sollen, und statt dessen besser nimmst, dass Änderungen im Ordner "Tag der Kopie" landen, dann kannst Du einfach nach dem A-Attribut kopieren und dieses anschließend löschen. Dieses Verfahren ist uralt und funktioniert solange, wie der kopierende Benutzer die Dateiattribute der Quelldateien ändern darf. Aber wenn Du das mit Robocopy machst, dann musst Du hier den "/M" Parameter nehmen und nicht "/A".