Xcopy für Delta bilden - xcopy aus txt-Datei - Frage Datei Verzeichnis
Hallo, (Frage ist weit unten in # # )
ich habe folgendes Problem zu lösen. Ich unterhalte eine Sammlung aus Hilfedateien von insgesamt 5 Projekten. Diese Projekte sind auf meinem Laufwerk verstreut. Letztlich fasse ich diese 5 Projekte zusammen auf einem Laufwerk P:\. Dort hat jedes Projekt einen Ordner (Projektname) + je einen Unterordner "Lokale Publizierungen" und einen Unterordner "Skripte". Diese beiden enthalten in sich relativ verlinkte html und pdf Dateien. Insgesamt kommen zusammen: 525 MB, 2650 Dateien in 500 Ordnern. Für turnusmäßige Updates filtere ich die neuen Dateien derzeit mit dem Total Commander nach folgendem Muster: Synchronisiere Quelle Projekt1-5 (verstreut) mit Ziel (auf P:\) ABER kopiere die ermittelten Dateien in einen (dritten) Delta Ordner. Das klappt, soll aber automatisiert werden, da es - nicht zuletzt bedingt durch kleinere Linkfehler - mehrmals am Tag nötig ist. Mit Hilfe dieses Forums habe ich mir folgende Lösung zusammengeklaut:
Kurzerläuterungen:
- die Pfade in der dateien_delta.txt haben immer wieder mal Leerzeichen (=> delims)
- die eigentliche Zusammenfassung auf P:\ (ziel1) wurde verdoppelt (ziel2), sodass die Pfadstruktur in der txt stimmen, bis auf das Laufwerk (aus p wird w), denn die Ordnerstruktur der verstreuten Projekte weicht ab
So sieht z.B. die dateien_delta.txt aus:
P:\tmpBp-Hilfe\P1_Onlinehilfe\Lokale Publizierung\html\aktuell_uebersicht.html.bak4_11
P:\tmpBp-Hilfe\P1_Onlinehilfe\Lokale Publizierung\html\schulsoftware.htm
So sieht der (unbrauchbare) Pfad der beiden Dateien in der verstreuten Quelle aus:
e:\1Pfad\Projekt1\Onlinehilfe\P1_Online1\Lokale Publizierung\html\aktuell_uebersicht.html.bak4_11
e:\1Pfad\Projekt1\Onlinehilfe\P1_Online1\Lokale Publizierung\html\schulsoftware.htm
### Hier nun die Frage ###
- ist der Delta Ordner auf W.:\ leer, will xcopy wissen, ob Ziel eine Datei oder ein Verzeichnis ist
- lasse ich die bat das 2. Mal laufen (Ergebnis ist ja dieselbe Updatemenge) wird einfach nur überschrieben
- wieso? Da ich in der txt nur komplette Dateipfade habe sind es immer Dateien (OK, ich bin ein Milchmädchen
)
Über Hilfe freue ich mich. Programmiersprachen kann ich eigentlich keine (Meine Kompetenz liegt im Inhalt der o.g. Hilfedateien)
Vielleicht gibt es ja auch einen ganz anderen Lösungsansatz für mein (eigentliches) Problem des Delta bildens. Dafür möchte ich aber kein Programm nutzen. Z.B. könnte das Tool Delta Checker genau das: vergleiche A (neuer) mit B (älter) und kopiere die Differenz nach C (Delta). Aber in deren Maske müsste ich 5 x je 3 Zeilen Pfade eingeben / kopieren. Dann bleib ich beim Commander.
Ok, Ende des Romans
Gruß
QuickMix
ich habe folgendes Problem zu lösen. Ich unterhalte eine Sammlung aus Hilfedateien von insgesamt 5 Projekten. Diese Projekte sind auf meinem Laufwerk verstreut. Letztlich fasse ich diese 5 Projekte zusammen auf einem Laufwerk P:\. Dort hat jedes Projekt einen Ordner (Projektname) + je einen Unterordner "Lokale Publizierungen" und einen Unterordner "Skripte". Diese beiden enthalten in sich relativ verlinkte html und pdf Dateien. Insgesamt kommen zusammen: 525 MB, 2650 Dateien in 500 Ordnern. Für turnusmäßige Updates filtere ich die neuen Dateien derzeit mit dem Total Commander nach folgendem Muster: Synchronisiere Quelle Projekt1-5 (verstreut) mit Ziel (auf P:\) ABER kopiere die ermittelten Dateien in einen (dritten) Delta Ordner. Das klappt, soll aber automatisiert werden, da es - nicht zuletzt bedingt durch kleinere Linkfehler - mehrmals am Tag nötig ist. Mit Hilfe dieses Forums habe ich mir folgende Lösung zusammengeklaut:
set tmptxt=w:\_DeltaTest
del %tmptxt%\dateien_delta.txt
set quelle_id=e:\1Pfad\Projekt1\Onlinehilfe\P1_Online1
set ziel1_id=p:\tmpBp-Hilfe\P1_Onlinehilfe
set ziel2_id=p:\Bp-Hilfe\P1_Onlinehilfe
xcopy "%quelle_id%\Lokale Publizierung\*.*" "%ziel1_id%\Lokale Publizierung\*.*" /d /s /y
xcopy "%ziel1_id%\Lokale Publizierung\*.*" "%ziel2_id%\Lokale Publizierung\*.*" /L /d /s /y|find /v "kopiert">%tmptxt%\dateien_delta.txt
xcopy "%quelle_id%\skripte\*.*" "%ziel1_id%\skripte\*.*" /d /s /y
xcopy "%ziel1_id%\skripte\*.*" "%ziel2_id%\skripte\*.*" /L /d /s /y|find /v "kopiert">>%tmptxt%\dateien_delta.txt
set quelle_id=
set ziel1_id=
set ziel2_id=
for /f "delims=" %%i in (%tmptxt%\dateien_delta.txt) do xcopy "%%i" "w:%%~pnxi" /Y
::pause
exit
Kurzerläuterungen:
- die Pfade in der dateien_delta.txt haben immer wieder mal Leerzeichen (=> delims)
- die eigentliche Zusammenfassung auf P:\ (ziel1) wurde verdoppelt (ziel2), sodass die Pfadstruktur in der txt stimmen, bis auf das Laufwerk (aus p wird w), denn die Ordnerstruktur der verstreuten Projekte weicht ab
So sieht z.B. die dateien_delta.txt aus:
P:\tmpBp-Hilfe\P1_Onlinehilfe\Lokale Publizierung\html\aktuell_uebersicht.html.bak4_11
P:\tmpBp-Hilfe\P1_Onlinehilfe\Lokale Publizierung\html\schulsoftware.htm
So sieht der (unbrauchbare) Pfad der beiden Dateien in der verstreuten Quelle aus:
e:\1Pfad\Projekt1\Onlinehilfe\P1_Online1\Lokale Publizierung\html\aktuell_uebersicht.html.bak4_11
e:\1Pfad\Projekt1\Onlinehilfe\P1_Online1\Lokale Publizierung\html\schulsoftware.htm
### Hier nun die Frage ###
- ist der Delta Ordner auf W.:\ leer, will xcopy wissen, ob Ziel eine Datei oder ein Verzeichnis ist
- lasse ich die bat das 2. Mal laufen (Ergebnis ist ja dieselbe Updatemenge) wird einfach nur überschrieben
- wieso? Da ich in der txt nur komplette Dateipfade habe sind es immer Dateien (OK, ich bin ein Milchmädchen
Über Hilfe freue ich mich. Programmiersprachen kann ich eigentlich keine (Meine Kompetenz liegt im Inhalt der o.g. Hilfedateien)
Vielleicht gibt es ja auch einen ganz anderen Lösungsansatz für mein (eigentliches) Problem des Delta bildens. Dafür möchte ich aber kein Programm nutzen. Z.B. könnte das Tool Delta Checker genau das: vergleiche A (neuer) mit B (älter) und kopiere die Differenz nach C (Delta). Aber in deren Maske müsste ich 5 x je 3 Zeilen Pfade eingeben / kopieren. Dann bleib ich beim Commander.
Ok, Ende des Romans
Gruß
QuickMix
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 171334
Url: https://administrator.de/forum/xcopy-fuer-delta-bilden-xcopy-aus-txt-datei-frage-datei-verzeichnis-171334.html
Ausgedruckt am: 24.04.2025 um 00:04 Uhr
2 Kommentare
Neuester Kommentar
Hallo QuickMix und willkommen im Forum!
Vorerst nur mal kurz zu
Anstelle der Zeilen in der Art von
kannst Du übrigens am Beginn des Batches
verwenden - es werden dann alle Änderungen an Variablen beim folgenden "
Grüße
bastla
P.S.: Code liest sich mit der passenden leichter ...
Vorerst nur mal kurz zu
- ist der Delta Ordner auf W.:\ leer, will xcopy wissen, ob Ziel eine Datei oder ein Verzeichnis ist
Da es keinen Schalter analog zu "/i" für "Ziel ist Datei" gibt, behelfe ich mir damit, am Ende des Zielpfades einen Stern anzufügen - das würde bei Deiner Zeile so aussehen:for /f "delims=" %%i in (%tmptxt%\dateien_delta.txt) do xcopy "%%i" "w:%%~pnxi*" /Y
- lasse ich die bat das 2. Mal laufen (Ergebnis ist ja dieselbe Updatemenge) wird einfach nur überschrieben
Dann ist ja klar, dass das (bereits vorhandene) Ziel eine Datei ist ...Anstelle der Zeilen in der Art von
set quelle_id=
setlocal
endlocal
" (und ein solches wird automatisch beim Ende des Batches ausgeführt) verworfen ...Grüße
bastla
P.S.: Code liest sich mit der passenden leichter ...