Robocopy: Verzeichnisse (nur 1. Level) mit Wildcard ausschließen
Hallo,
ich möchte eine recht umfangreiche Festplatte per robocopy-Skript sichern und muss sie auf 2 HDDs verteilen.
Auf der 1. HDD sollen alle Verzeichnisse (Frist Level) sein, die mit "A" - "L" beginnen,
auf der 2. HDD alle mit "M" - "Z".
Mein Ansatz war, über den /xd Schalter die "unerwünschten" Verzeichnisse auszuschließen, da m.W. robocopy keine Wildcards im Verzeichnispfad akzeptiert.
Also
1. robocopy C:\Daten D:\daten /s /xo /r:0 /w:1 /MIR /FFT /xj /COPY:DT /XD M* N* O* [..] "$RECYCLE.BIN" "System Volume Information" /A-:HS
2. robocopy C:\Daten D:\daten /s /xo /r:0 /w:1 /MIR /FFT /xj /COPY:DT /XD A* B* C* [..] "$RECYCLE.BIN" "System Volume Information" /A-:HS
Prinzipiell funktioniert es - dann aber auch wieder nicht, wenn ein Ordner Unterordner hat, die mit einem ausgeschlossenen Buchstaben beginnen, wird dieser auch ausgeschlossen.
Beispiel
a) C:\Daten\A\A wird beim 1. Sriipt kopiert
b) C:\Daten\A\N wird beim 1. Script ignoriert
Es soll aber natürlich C:\Daten\A mit allen Unterordnern kopiert werden
Ich habe daraufhin versucht, komplette Pfade im Ausschluss anzugeben (also z.B. "C:\Daten\A*" oder auch als Pfad "\\Freigabe\\Daten\\A*" - das quittiert er mit einem "invalid parameter" Erro.
Gibt es eine andere Option?
(PS:
Die Umgehungslösung, alle Ordner von A-L erst mal in einen übergeordneten Ordner "1" und alle Ordner M-Z in einen Ordner "2" zu packen und die dann zu sichern, habe ich schon in Betracht gezogen - ich mag es aber eigentlich wenn es irgendwie geht über einen Befehl lösen.
Bin für jeden Hinweis dankbar!
ich möchte eine recht umfangreiche Festplatte per robocopy-Skript sichern und muss sie auf 2 HDDs verteilen.
Auf der 1. HDD sollen alle Verzeichnisse (Frist Level) sein, die mit "A" - "L" beginnen,
auf der 2. HDD alle mit "M" - "Z".
Mein Ansatz war, über den /xd Schalter die "unerwünschten" Verzeichnisse auszuschließen, da m.W. robocopy keine Wildcards im Verzeichnispfad akzeptiert.
Also
1. robocopy C:\Daten D:\daten /s /xo /r:0 /w:1 /MIR /FFT /xj /COPY:DT /XD M* N* O* [..] "$RECYCLE.BIN" "System Volume Information" /A-:HS
2. robocopy C:\Daten D:\daten /s /xo /r:0 /w:1 /MIR /FFT /xj /COPY:DT /XD A* B* C* [..] "$RECYCLE.BIN" "System Volume Information" /A-:HS
Prinzipiell funktioniert es - dann aber auch wieder nicht, wenn ein Ordner Unterordner hat, die mit einem ausgeschlossenen Buchstaben beginnen, wird dieser auch ausgeschlossen.
Beispiel
a) C:\Daten\A\A wird beim 1. Sriipt kopiert
b) C:\Daten\A\N wird beim 1. Script ignoriert
Es soll aber natürlich C:\Daten\A mit allen Unterordnern kopiert werden
Ich habe daraufhin versucht, komplette Pfade im Ausschluss anzugeben (also z.B. "C:\Daten\A*" oder auch als Pfad "\\Freigabe\\Daten\\A*" - das quittiert er mit einem "invalid parameter" Erro.
Gibt es eine andere Option?
(PS:
Die Umgehungslösung, alle Ordner von A-L erst mal in einen übergeordneten Ordner "1" und alle Ordner M-Z in einen Ordner "2" zu packen und die dann zu sichern, habe ich schon in Betracht gezogen - ich mag es aber eigentlich wenn es irgendwie geht über einen Befehl lösen.
Bin für jeden Hinweis dankbar!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 8122943021
Url: https://administrator.de/forum/robocopy-verzeichnisse-nur-1-level-mit-wildcard-ausschliessen-8122943021.html
Ausgedruckt am: 20.04.2025 um 02:04 Uhr
3 Kommentare
Neuester Kommentar

Ohne Robocopy mit Powershell
Mit Robocopy in Powershell
oder plain 80er Batch
Gruß siddius
Get-Childitem "c:\daten\[A-L]*" -Directory | copy-item -Destination "d:\daten" -Force -Recurse
Get-Childitem "c:\daten\[M-Z]*" -Directory | copy-item -Destination "e:\daten" -Force -Recurse
Get-Childitem "c:\daten\[A-L]*" -Directory | %{
robocopy "$($_.Fullname)" "d:\daten\$($_.Name)" /MIR
}
Get-Childitem "c:\daten\[M-Z]*" -Directory | %{
robocopy "$($_.Fullname)" "e:\daten\$($_.Name)" /MIR
}
@echo off
for /f "delims=" %%a in ('dir /b /ad "c:\daten" ^|findstr /ib "[A-L]"') do (
robocopy "c:\ordner\%%a" "d:\daten\%%a" /MIR
)
for /f "delims=" %%a in ('dir /b /ad "c:\daten" ^|findstr /ib "[M-Z]"') do (
robocopy "c:\ordner\%%a" "e:\daten\%%a" /MIR
)