frankie69
Goto Top

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!

Content-Key: 8122943021

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

Printed on: May 3, 2024 at 11:05 o'clock

Member: nEmEsIs
nEmEsIs Aug 12, 2023 at 18:31:23 (UTC)
Goto Top
Hi

Dann mach doch am /XD C:\Daten\A\*,
C:\Daten\B\*, etc
Lässt sich mit excel schnell hinbekommen.

Dann ist explizit nur der Pfad ausgeschlossen.

Mit freundlichen Grüßen Nemesis
Member: frankie69
frankie69 Aug 12, 2023 at 19:21:18 (UTC)
Goto Top
Hi,

Danke, aber das löst das Problem nicht oder ich habe mich falsch ausgedrückt bzw. was Du vorschlägst, wäre meine Umgehungslösung.

Die Pfade heißen z.B

C:\Daten\ABBA\Album 1
C:\Daten\ABBA\Album 2\
C:\Daten\AC-DC\Album 1\
C:\Daten\AC-DC\Album 2\
...
C:\Daten\Queen\Album 1\
C:\Daten\Queen\Album 2\
C:\Daten\Rolling Stones\Album 1\

Auf Backup Platte 1 sollen jetzt alle Bands (= Ordnernamen 1st Level (bezogen auf Daten) mit den Anfangsbuchstaben A bis L,
auf Backup Platte 2 alle mit M bis Z

Deine Lösung hieße, ich müsste erst alle Bands / Ordner mit A nach C:\Daten\A\ mit B nach C:\Daten\B\ usw. verschieben. Das möchte ich eben möglichst vermeiden (würde ich das machen, könnte ich einfach 26 robocopys für Daten\A bis Daten\Z hintereinanderkopieren und wäre fertig - müsste aber meine komplette Archivstruktur nur des Backups Willen ändern face-sad
Mitglied: 7907292512
7907292512 Aug 12, 2023 updated at 20:47:48 (UTC)
Goto Top
Ohne Robocopy mit Powershell
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  
Mit Robocopy in Powershell
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  
}
oder plain 80er Batch
@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  
)
Gruß siddius