CMD ROBOCOPY

,

Kommandozeilenbefehle: ÜbersichtVariablenERRORLEVEL
Die wichtigsten Befehle: dirchkdskcdmdrdtreedelattribifxcopyrobocopy

Robocopy

Kommandozeilenbefehle für Stapeldateien (Wikibooks)
ROBOCOPY (Wikibooks)
Beispiel: Sicherung des kompletten Systemlaufwerks

Was ist zu beachten?
  • Nach

Die Parameter

CodeBedeutung
/SDer Kopierbefehl betrifft auch alle Unterordner (Subdirectories).
/PURGEDateien, die im Original gelöscht worden sind, werden auch aus der Kopie gelöscht.
/FPIm Protokoll werden die kopierten Dateien einschließlich Ordnernamen aufgelistet.
/maxage:20110501Dateien vor dem 01.05.2011 werden ignoriert.
/maxage:30Dateien älter als 30 Tage werden ignoriert.
/XA:RSHDateien mit den Attributen „read only“, „system“ und „hidden“ (versteckt) werden ignoriert.
/XDDie dahinter aufgezählten Ordner werden beim Kopieren ignoriert (dort sind erfahrungsgemäß keine Benutzerdateien).
/XFAlle dahinter aufgezählten Dateiarten werden ignoriert.
/LEV:nKopiert nur die obersten Ebenen der Quellverzeichnisstruktur.
/w:1 /r:1 Wenn sich eine Datei nicht lesen lässt, erfolgt nach einer Sekunde (w:1) eine einzige (r:1) Wiederholung.

Anmerkung zu /LEV:n: Nicht selten finde ich auf defekten Windows-Installationen tief verschachtelte Strukturen, die nicht kopiert werden können, z. B.
\Documents and Settings\All Users\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\ usw.
Beim Versuch, die Daten von einer 256 GB SSD auf eine 1 TB SSD zu retten, bekam ich nach vier Tagen und 34 Verschachtelungsebenen die Meldung „Es steht nicht genug Speicherplatz auf dem Datenträger zur Verfügung“. Ich empfehle lev:12 und außerdem /xd Anwendungsdaten "Application Data".
Anmerkung zur Anmerkung: Warum dauerte das Kopieren vier Tage? Weil Windows Kopien von allen benutzen Inhaltsverzeichnissen und Belegungstabellen im RAM speichert. Bei 34 Verschachtelungsebenen braucht es eine Menge Speicherplatz, um eine Datei zu lesen. Und wenn die Datei anschließend auf den Zieldatenträger geschrieben werden soll, muss Windows auch noch die vielen Ebenen der Zielverzeichnisstruktur im RAM aufbewahren. Irgendwann wird der RAM knapp und Windows muss immer wieder Teile vom RAM temporär in die Swap-Datei auslagern. Für jede einzelne Datei aufs neue.
Anmerkung zu /XD: Beispiele für Ordner, die nicht gesichert werden brauchen, sind: eventuelle Recovery-Dateien, der Windowsordner und der bzw. die Programm-Ordner, der Papierkorb (je nach Windows-Version hat der Papierkorb verschiedene Namen), Installationsdateien und Systemdateien. Sie müssen vermutlich die englischen Ordnerbezeichnungen verwenden.
Anmerkung zu /XF: Beispiele für Dateien, die nicht gesichert werden brauchen, sind:

  • *.tib und *.img sind Image-Dateien.
  • *.msi (Microsoft Installer) sind Installationsdateien.
  • *.exe, *.dll, *.com und *.ini sind Programmdateien. Diese zu sichern ist unsinnig, denn im Katastrophenfall müssen ohnehin alle Programme neu installiert werden.
  • Obwohl die Datei ntuser.* die persönlichen Einstellungen (z. B. Anmeldepasswort) enthält, ist deren Sicherung sinnlos, denn sie läßt sich nicht zurückkopieren.

Der von robocopy erstellte Ordner ist eventuell unsichtbar. In diesem Fall kann man mit dem Befehl attrib -h -s Zielordner\*.* /s /d den Ordner sichtbar machen.
Anmerkung zum Vorgehen: Wenn Sie den Robocopy-Befehl gestartet haben und Sie sehen, dass Unnötiges kopiert wird, zögern Sie nicht, den Kopiervorgang mit Strg-C abzubrechen. Drücken Sie die Funktionstaste F3 und ergänzen Sie die Liste hinter /XD und /XF um weitere Namen. Starten Sie den Robocopy-Befehl neu. Weil Robocopy bereits kopierte Dateien erkennt und nicht erneut kopiert, verlieren Sie fast keine Zeit.

Errorlevel-Code

Der Befehl robocopy gibt den folgenden ERRORLEVEL zurück:

ERRORLEVELBedeutung
0Es wurde nichts kopiert, Quelle und Ziel sind komplett identisch.
1Eine oder mehrere Dateien wurden erfolgreich kopiert (es gab neue Dateien).
2Einige Extra-Dateien oder -Ordner wurden entfernt. Keine Dateien wurden kopiert.
4Einige abweichende Dateien oder Ordner wurden gefunden, siehe Logbuch. Aufräumen könnte nötig sein.
8Einige Dateien oder Ordner konnten nicht kopiert werden (Fehler beim Kopieren oder Wiederholungs-Limit erreicht). Beachte das Logbuch.
16Ernster Fehler. Robocopy konnte keine Dateien kopieren. Vielleicht Berechtigungsfehler?

Anmerkung 1: „Extra-Dateien“ sind Dateien, die in der Quelle bereits gelöscht sind, aber im Ziel noch vorhanden sind und die deshalb beim Synchronisieren im Ziel gelöscht werden.

Anmerkung 2: Die Bits des Fehlercode können kombiniert werden: 3 = 2+1, 5 = 4+1, 6 = 4+2, 7 = 4+2+1
Beispiel: 3 (2+1): Einige Dateien wurden erfolgreich kopiert, Extra-Dateien wurden entfernt. Fehler sind nicht aufgetreten.

Jeder Errorlevel von 0 bis 7 bedeutet einen Erfolg des Kopiervorgangs.
Jeder Errorlevel von 8 oder größer bedeutet, dass einiges kopiert wurde, aber etwas ist dabei schief gegangen.
Ein Errorlevel von 16 bedeutet vollen Misserfolg: nichts wurde kopiert.

Eine (unvollständige) Auswertung ist folgendermaßen möglich:

robocopy %1 %2 /s ...
if errorlevel 8 echo Kopieren fehlerhaft beendet & goto Schluss
echo Kopieren erfolgreich

Eine vollständige Auswertung des Errorlevel ist folgendermaßen möglich:

if %ERRORLEVEL% EQU 16 echo ***FATAL ERROR*** & goto end
if %ERRORLEVEL% EQU 15 echo OKCOPY + FAIL + MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 14 echo FAIL + MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 13 echo OKCOPY + FAIL + MISMATCHES & goto end
if %ERRORLEVEL% EQU 12 echo FAIL + MISMATCHES& goto end
if %ERRORLEVEL% EQU 11 echo OKCOPY + FAIL + XTRA & goto end
if %ERRORLEVEL% EQU 10 echo FAIL + XTRA & goto end
if %ERRORLEVEL% EQU 9 echo OKCOPY + FAIL & goto end
if %ERRORLEVEL% EQU 8 echo FAIL & goto end
if %ERRORLEVEL% EQU 7 echo OKCOPY + MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 6 echo MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 5 echo OKCOPY + MISMATCHES & goto end
if %ERRORLEVEL% EQU 4 echo MISMATCHES & goto end
if %ERRORLEVEL% EQU 3 echo OKCOPY + XTRA & goto end
if %ERRORLEVEL% EQU 2 echo XTRA & goto end
if %ERRORLEVEL% EQU 1 echo OKCOPY & goto end
if %ERRORLEVEL% EQU 0 echo No Change & goto end
:end

 


 

Skills

Posted on

5. März 2025

Submit a Comment

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden..

Skills

Posted on

5. März 2025

Cookie Consent Banner von Real Cookie Banner