Kommandozeilenbefehle: Übersicht • Variablen • ERRORLEVEL
Die wichtigsten Befehle: dir • chkdsk • cd • md • rd • tree • del • attrib • if • xcopy • robocopy
Robocopy
Kommandozeilenbefehle für Stapeldateien (Wikibooks)
ROBOCOPY (Wikibooks)
Beispiel: Sicherung des kompletten Systemlaufwerks
Was ist zu beachten?
- Nach
Die Parameter
Code | Bedeutung |
---|---|
/S | Der Kopierbefehl betrifft auch alle Unterordner (Subdirectories). |
/PURGE | Dateien, die im Original gelöscht worden sind, werden auch aus der Kopie gelöscht. |
/FP | Im Protokoll werden die kopierten Dateien einschließlich Ordnernamen aufgelistet. |
/maxage:20110501 | Dateien vor dem 01.05.2011 werden ignoriert. |
/maxage:30 | Dateien älter als 30 Tage werden ignoriert. |
/XA:RSH | Dateien mit den Attributen „read only“, „system“ und „hidden“ (versteckt) werden ignoriert. |
/XD | Die dahinter aufgezählten Ordner werden beim Kopieren ignoriert (dort sind erfahrungsgemäß keine Benutzerdateien). |
/XF | Alle dahinter aufgezählten Dateiarten werden ignoriert. |
/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 /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.
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.
Errorlevel-Code
Der Befehl robocopy gibt den folgenden ERRORLEVEL zurück:
ERRORLEVEL | Bedeutung |
---|---|
0 | Es wurde nichts kopiert, Quelle und Ziel sind komplett identisch. |
1 | Eine oder mehrere Dateien wurden erfolgreich kopiert (es gab neue Dateien). |
2 | Einige Extra-Dateien oder -Ordner wurden entfernt. Keine Dateien wurden kopiert. |
4 | Einige abweichende Dateien oder Ordner wurden gefunden, siehe Logbuch. Aufräumen könnte nötig sein. |
8 | Einige Dateien oder Ordner konnten nicht kopiert werden (Fehler beim Kopieren oder Wiederholungs-Limit erreicht). Beachte das Logbuch. |
16 | Ernster 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