Geänderte Dateien per dir in Datei und fc ermitteln
Hallo Leute,
ich muss euch mal wieder belästigen..
Ich möchte Dateien die sich seit der letzten Datensicherung geändert haben packen und wegkopieren.
Da sich die bereits gepackten und wegkopierten schlecht mit den unkomprimierten vergleichen lassen, hatte ich folgenden Ansatz gewählt..
Mit dir die Dateinamen in Datei umleiten und dann mit fc die am Tag vorher erstellte datei vergleichen und aus den Unterschieden die zu kopierenden Dateien ermitteln.
Versuch:
dir *.dbx | SORT /r | FIND /v "Volumeseriennummer:" | FIND /v "Verzeichnis" | FIND /v "Datei(en)" | FIND /v "Laufwerk" > copy.txt
fc copyalt.txt copy.txt
Leider werden mir wenn sich eine Datei ändert aber auch die vorherige und die nachfolgende angezeigt, obwohl die gleich sind... Ausserdem weiß ich noch net wie ich aus dem Wust an Datum und Größe den Dateinamen extrahieren kann..
ich muss euch mal wieder belästigen..
Ich möchte Dateien die sich seit der letzten Datensicherung geändert haben packen und wegkopieren.
Da sich die bereits gepackten und wegkopierten schlecht mit den unkomprimierten vergleichen lassen, hatte ich folgenden Ansatz gewählt..
Mit dir die Dateinamen in Datei umleiten und dann mit fc die am Tag vorher erstellte datei vergleichen und aus den Unterschieden die zu kopierenden Dateien ermitteln.
Versuch:
dir *.dbx | SORT /r | FIND /v "Volumeseriennummer:" | FIND /v "Verzeichnis" | FIND /v "Datei(en)" | FIND /v "Laufwerk" > copy.txt
fc copyalt.txt copy.txt
Leider werden mir wenn sich eine Datei ändert aber auch die vorherige und die nachfolgende angezeigt, obwohl die gleich sind... Ausserdem weiß ich noch net wie ich aus dem Wust an Datum und Größe den Dateinamen extrahieren kann..
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 96820
Url: https://administrator.de/contentid/96820
Ausgedruckt am: 25.11.2024 um 00:11 Uhr
7 Kommentare
Neuester Kommentar
Hmmja, Haegar75,
bei aller Liebe zu Batch-Lösungen... lass uns bitte noch ein paar Zeilen bei der Backup-Strategie verweilen...
So, wie sich das End-Wunsch-Ergebnis darstellen müsste, erzeugst Du doch täglich eine Delta-Sicherung (alle heute geänderten Dateien) und dieses Delta speicherst Du als eine ZIP oder RAR-Datei weg.
Wäre es da nicht simpler und wartbarer, jeden gatesverdammten Tag per Taskplaner einen Batchjob anzustoßen, der alle Dateien mit heutigen Datum im ...\src-Verzeichnis zusammensammelt und in eine (heut z.B.) 2008-09-12.zip schreibt?
Oder welches bisher geplante Feature würde dann fehlen?
Grüße
Biber
bei aller Liebe zu Batch-Lösungen... lass uns bitte noch ein paar Zeilen bei der Backup-Strategie verweilen...
So, wie sich das End-Wunsch-Ergebnis darstellen müsste, erzeugst Du doch täglich eine Delta-Sicherung (alle heute geänderten Dateien) und dieses Delta speicherst Du als eine ZIP oder RAR-Datei weg.
Wäre es da nicht simpler und wartbarer, jeden gatesverdammten Tag per Taskplaner einen Batchjob anzustoßen, der alle Dateien mit heutigen Datum im ...\src-Verzeichnis zusammensammelt und in eine (heut z.B.) 2008-09-12.zip schreibt?
Oder welches bisher geplante Feature würde dann fehlen?
Grüße
Biber
...in diesem Fall würde ich dann eher den Weg gehen, mit ZWEI komplettsicherungs-ZIPs zu arbeiten.
In der ersten Komplett-ZIP-Datei (die für Mo, Mi, Fr) lässt Du dein ZIP-Programm jeweils alle src-Files aktualisieren, die verglichen mit dem letzten Stand im Archiv neuer sind; in der anderen Zip-Datei (die für Mo und Mi) machst Du dasselbe Spielchen.
Somit hast Du immer die Daten von heute( im Src-Verzeichnis), den Vortags-Stand und den von vorgestern( oder älter).
Oder du nimmst nur ein Komplett-Archiv als zip und machst die Zwei-Dalta-Mimik nur mit Dateien, die sich im letzten Monat geändert haben.
Vorteil der ersten Lösung wäre: du kannst (solltest Du mal in Deinem Src-Ordner richtig was verkantet haben) immer noch per Knopfdruck auf einen in sich konsistenten Stand/zusammenpassende Dateien zurück.
Aus einem SRC-Ordner eine einzelne Datei aus einer Delta-Sicherung zurückzukopieren... hmmm..... kann klappen, muss aber nicht.
Aber ich wäre auch bereit, meine Einwände zurückzustellen, wenn Du auf Deinem Konzept bestehst...
Grüße
biber
In der ersten Komplett-ZIP-Datei (die für Mo, Mi, Fr) lässt Du dein ZIP-Programm jeweils alle src-Files aktualisieren, die verglichen mit dem letzten Stand im Archiv neuer sind; in der anderen Zip-Datei (die für Mo und Mi) machst Du dasselbe Spielchen.
Somit hast Du immer die Daten von heute( im Src-Verzeichnis), den Vortags-Stand und den von vorgestern( oder älter).
Oder du nimmst nur ein Komplett-Archiv als zip und machst die Zwei-Dalta-Mimik nur mit Dateien, die sich im letzten Monat geändert haben.
Vorteil der ersten Lösung wäre: du kannst (solltest Du mal in Deinem Src-Ordner richtig was verkantet haben) immer noch per Knopfdruck auf einen in sich konsistenten Stand/zusammenpassende Dateien zurück.
Aus einem SRC-Ordner eine einzelne Datei aus einer Delta-Sicherung zurückzukopieren... hmmm..... kann klappen, muss aber nicht.
Aber ich wäre auch bereit, meine Einwände zurückzustellen, wenn Du auf Deinem Konzept bestehst...
Grüße
biber
Hallo Haegar75 und Biber!
Unabhängig von den weiteren Überlegungen als Antwort auf die eigentliche Fragestellung: Als Ersatz der "fc"-Zeile sollte
die unterschiedlichen Dateien ausfiltern.
Grüße
bastla
Unabhängig von den weiteren Überlegungen als Antwort auf die eigentliche Fragestellung: Als Ersatz der "fc"-Zeile sollte
Z:\>for /f "delims=" %%i in (D:\copy.txt) do findstr /x /c:"%%i" D:\copyalt.txt>nul || for /f "tokens=3*" %%a in ("%%i") do echo %%b
Grüße
bastla
Hallo Haegar75!
anhand der defaultmäßigen (daher auch keine Angabe von "delims=") Trennzeichen "Tab" und "Leerzeichen" in die Teile
zerlegt.
Eigentlich benötigt wird zwar der Teil 4, aber, um für den Fall, dass der Dateinamen ein oder mehrere Leerzeichen enthalten könnte (wodurch auch noch die Teile 5, 6, etc entstünden), vorzusorgen, wird der Rest der Zeile durch die Angabe von "*" zu einem einzigen "token" (%%b) zusammengefasst.
Grüße
bastla
Was macht das "token=3*" eigentlich?
Damit wird festgelegt, welche Teile der Zeile interessieren bzw den Schleifenvariablen (hier ab %%a) zugeordnet werden - so wird zB die Zeile12.09.2008 22:40 2.542 copyalt.txt
1: 12.09.2008
2: 22:40
3: 2.542
Rest: copyalt.txt
Eigentlich benötigt wird zwar der Teil 4, aber, um für den Fall, dass der Dateinamen ein oder mehrere Leerzeichen enthalten könnte (wodurch auch noch die Teile 5, 6, etc entstünden), vorzusorgen, wird der Rest der Zeile durch die Angabe von "*" zu einem einzigen "token" (%%b) zusammengefasst.
Grüße
bastla