fugu
Goto Top

xcopy exclude-file mal andersherum

Moinz @Batchler!

Ich weiss, wie ich beim Kopieren Ausschlüsse setzten kann.
xcopy QUELLE ZIEL /exclude:ausschluss.txt

Geht das Ganze auch anders herum? Eine Text-Datei mit Quellen-Angaben?

Gruss und denkt immer dran:
tempus fugit - also verbringt nicht zu viel Zeit am Rechner...

Content-Key: 49365

Url: https://administrator.de/contentid/49365

Ausgedruckt am: 28.03.2024 um 10:03 Uhr

Mitglied: bastla
bastla 20.01.2007 um 19:03:20 Uhr
Goto Top
Hallo t-f (schon Zeit gespart face-wink)!

Wenn's nicht XCOPY sein muss, könnte ich Dich auf einen aktuellen sehr langen Befehl mit Batchdatei erstellen zu ROBOCOPY hinweisen, ansonsten muss wohl eine FOR-Schleife her.

Am Besten stellst Du ein Beispiel für den Inhalt einer entsprechenden "Include"-Datei rein.

Grüße
bastla
Mitglied: fugu
fugu 20.01.2007 um 19:21:18 Uhr
Goto Top
Hallo bastla,

thx für die schnelle Antwort.
und ja - jede Menge face-wink

Eine solche Datei sollte einfach die zu sichernden Ordner aufgelistet beinhalten:

C:\Dokumente und Einstellungen\user\Lokale Einstellungen\Anwendungsdaten\Microsoft\Outlook
D:\Auslagerungsdateien
D:\Projekte

und trotzdem bin ich dankbar, wenn ihr euche kostbare Zeit noch ein wenig hier lasst...

bzgl. robocopy: ok, wenn's sein muss, aber ich wollte es eigentlich ohne extra tools

juhuu und helau
Mitglied: bastla
bastla 20.01.2007 um 21:07:50 Uhr
Goto Top
Hallo tempus-fugit (so viel Zeit muss dann doch sein face-wink)!

Aber jetzt mach ich's kurz:
@echo off
for /f "delims=" %%i in ('type "%1"') do xcopy /y %%i "%~2\"  
Wenn Du diese Zeile als "XCopyInclude.bat" speicherst, kannst Du die Sicherung wie folgt aufrufen:
XCopyInclude D:\Einschluss.txt "Z:\Pfad für Sicherung" > D:\CopyLog.txt  
Damit werden alle kopierten Dateien in "D:\CopyLog.txt" protokolliert. Die Einträge in "Einschluss.txt" können wie in Deinem Beispiel erfolgen (dann wird jeweils der angegebene Ordner ohne Unterordner kopiert), Du kannst aber auch noch einschränken oder erweitern, wie etwa mit
D:\Fotos\Weihnachtsfeier06*.raw
/s "E:\Ordner\Mit Unterordnern"  
Bitte beachten, dass Pfade mit Leerstellen (wie üblich) in Anführungszeichen stehen müssen.

Grüße
bastla
Mitglied: fugu
fugu 20.01.2007 um 21:28:04 Uhr
Goto Top
Wow, besten Dank, cool.

Ich werd's getreu meines Lebensmottos morgen früh mal testen.
Jetzt "muss" ich erst mal meinem zweiten Hobby nach dem Computer fröhnen: Die letzte Aufnahme von CSI gucken.

Bis morgen!
Mitglied: fugu
fugu 24.01.2007 um 10:25:41 Uhr
Goto Top
So, jetzt bin ich doch tatsächlich erst jetzt dazu gekommen, das Skript zu testen - sch... Zeit face-sad

Jau, das funkt - da bin ich schon mal 'nen grossen Schritt weiter.

Habe den xcopy Befehl geändert auf:
for /f "delims=" %%i in ('type "%1"') do xcopy /c /e /h /i /r /y /q %%i "%~2\"  

Wenn ich mehrere Verzeichnisse in der "Einschluss.txt" angebe:
/s D:\Verz1
/s D:\Verz2
/s D:\Verz3
dann werden alle Unterverzeichnisse von Verz1, Verz2 und Verz3 im Zielverzeichnis in eine einziges Verzeichnis kopiert. Das ist unschön.

Wenn ich als Ziel ebenfalls die Variable "%%i" nehmen würde, dann gäbe es Probleme mit der Ordnerbezeichnung wegen des "\", richtig?

Kann man das lösen?

Danke noch mal, tf
Mitglied: bastla
bastla 24.01.2007 um 15:22:30 Uhr
Goto Top
Hallo tempus-fugit!

Wenn ich mehrere Verzeichnisse in der "Einschluss.txt" angebe ... dann werden alle Unterverzeichnisse von Verz1, Verz2 und Verz3 im Zielverzeichnis in eine einziges Verzeichnis kopiert. Das ist unschön.
... aber nur konsequent, da ja schließlich auch alle Dateien von Verz1, Verz2 und Verz3 im Zielverzeichnis vermischt werden. face-wink

Wenn ich als Ziel ebenfalls die Variable "%%i" nehmen würde, dann gäbe es Probleme mit der Ordnerbezeichnung wegen des "\", richtig?
Das wäre noch das kleinste Problem - %%i enthält nicht mehr und nicht weniger als die gesamte Zeile (also inklusive Option "/s", wenn vorhanden, und Quelllaufwerksangabe).

Kann man das lösen?
Ich würde sagen: man muss.

Wenn man die Vermengung von Optionen und Quellangaben in einer einzigen Zeile der "Einschluss.txt" als Problem erkennt, böte sich folgende einfache Lösung an: Nimm den Schalter "/s" gleich in den "xcopy"-Befehl auf (wird wohl ohnehin Default sein) und ändere die Quellangabe so ab, dass auch die Dateien (als Wildcards) angeführt werden, also etwa:
D:\Verz1\Verz12\*.*
D:\Verz2\*.*
D:\Verz3\*.doc
Dann sollte mit
for /f "delims=" %%i in ('type "%~1"') do xcopy /c /e /h /i /r /y /q <b>/s</b> "%%i" "%~2%%~pi"  
eine vernünftige Struktur unterhalb des übergebenen Zielpfades %2 entstehen.

Müssten tatsächlich auch noch Optionen in die Liste aufgenommen werden, bräuchte man ein eindeutiges Trennzeichen zwischen Pfadangabe und Option.

Grüße
bastla