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!
Please also mark the comments that contributed to the solution of the article
Content-Key: 8122943021
Url: https://administrator.de/contentid/8122943021
Printed on: May 3, 2024 at 11:05 o'clock
3 Comments
Latest comment
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
)