ich möchte beim Kopieren mit xcopy ein paar Verzeichnisse ausschließen, nur weiß ich überhaupt nicht, wie der Befehl /exclude funktioniert...ich weiß zwar, dass man die auszuschließenden Ordner in eine Datei geschrieben werden müssen, was ich auch versucht hatte und dann auf die Datei mit /exclude:exclude.txt verwiesen hatte, aber es funkionierte nicht (mit einem Verzeichniss in der Datei hatte es funktioniert, mit mehreren aber nicht...)
ich hab folgende Schalter beim Befehl verwendet:
set Quelle="E:"
set Ziel="Z:\Eigene Dateien"
xcopy %Quelle% %Ziel% /E /V /C /I /Q /K /O /Y /R >>%Log%
Wie verwendet man nun den Schalter richtig?
Ich finde die Befehlszeilenreferenz in der Windows-Hilfe wenig hilfreich...
/EXCLUDE:Datei1[+Datei2][+Datei3]...
Gibt eine Liste von Zeichenfolgen an. Jede Zeichenfolge
sollte in einer einzelnen Zeile in der Datei angezeigt werden.
Wenn eine der Zeichenfolgen Teil des absoluten Verzeichnispfads
der zu kopierenden Datei ist, wird diese Datei vom
Kopiervorgang ausgeschlossen. Beispiel: Bei der
Zeichenfolge \obj\ oder .obj werden alle Dateien
unterhalb des Verzeichnisses OBJ bzw. alle Dateien mit
der Erweiterung .obj vom Kopiervorgang ausgeschlossen.
jetzt weiß ich warum, in den auszuschließenden Verzeichnissen befinden sich noch weitere und daher kopiert er das Verzeichnis...wie stellt man denn ein, dass er die Ordner in der Liste überhaupt nicht kopieren soll (die Unterordner kann ich nicht aufnehmen in die Liste, da diese variabel sind)?
Mein Test-Batch funktioniert:
Ich habe in einem Ordner vier Unterordner angelegt, zwei mit jeweils noch einem Unterordner und einer Datei darin, einen mit einer Datei drin und einen leeren. Alle vier hab ich in die "exclude.txt" gesetzt und eine Batchdatei geschrieben, mit denselben Schaltern, wie in meiner Batch-Datei, wo es dann nicht mehr funktioniert:
Test-Batch:
set Quelle="Y:\Quelle"
set Ziel="Y:\Ziel"
Auszug aus BackUp-Batch:
set Quelle="E:"
set Ziel="Z:\Eigene Dateien"
set Log="Z:\log.txt"
if "%Eingabe%"=="K" (
echo Komplettes BackUp wird gestartet...
echo komplettes BackUp vom %date% um %time% >%Log%
echo Altes BackUp wird geloescht...
rmdir %Ziel% /s /q
echo Altes BackUp geloescht.
echo.
echo Dateien werden kopiert...
xcopy %Quelle% %Ziel% /E /V /C /I /Q /K /O /Y /R /exclude:E:\exclude.txt >>%Log%
echo Dateien kopiert.
attrib %Quelle%*.* -A /S
echo =========================== >>%Log%
echo %Quelle% wurde komplett nach %Ziel% gesichert.
)
if "%Eingabe%"=="I" (
echo Inkrementelles BackUp wird gestartet...
echo inkrementelles BackUp vom %date% um %time% >>%Log%
echo Nur neue Dateien werden kopiert...
xcopy %Quelle% %Ziel% /M /E /V /C /I /Q /K /O /Y /R /exclude:E:\exclude.txt >>%Log%
echo =========================== >>%Log%
echo %Ziel% wurde auf den Stand von %Quelle% gebracht.
)
Pause
)
exclude.txt:
\AquaMark3\
\Eigene eBooks\
\O&O\
Ja, also um nochmal zusammenzufassen:
Im Test funktioniert es. Keiner der vier Ordner wird mitkopiert. Aber mit dem anderen Batch-Programm funktioniert es nicht; dir drei Ornder werden mitkopiert...???
Ach ja, mit einem * funktioniert es auch nicht.
und:
du hast RIESIGE klammernblöcke!
das ist sehr gefährlich, wenn dir da mal durch variablen oder verzeichnisnamen ungeahnte klammern reinrutschen!
(mach lieber gotos, um passagen zu überspringen!)