Kommandozeilenbefehle: Übersicht • Variablen • ERRORLEVEL
Die wichtigsten Befehle: dir • chkdsk • cd • md • rd • tree • del • attrib • if • xcopy • robocopy
- Inhaltsverzeichnis
- Verwendung
- Beispiel: Systemlaufwerk sichern
- Beispiel: Eigene Dateien sichern
- Protokollierung
- Parameter
- Temporäre Dateien entfernen
- Heruntergeladene Updates löschen
- WinSXS verkleinern
- Eigene Dateien verlagern
- Wikibooks
- Befehle für Stapeldateien
- ROBOCOPY Übersicht
- Verwandte Themen
- Übersicht Software
- Sicherung des Systemlaufwerks
Robocopy
Verwendung
| Robocopy | Quelle Ziel [Datei [Datei]…] [Optionen] |
|---|---|
| Quelle: | Quellverzeichnis (Laufwerk:\Pfad oder \\Server\Freigabe\Pfad) | Ziel: | Zielverzeichnis (Laufwerk:\Pfad oder \\Server\Freigabe\Pfad) | Datei: | Zu kopierende Dateien (Namen/Platzhalter: Standard ist „*.*„) | Optionen: | z. B. /r:0 bedeutet: bei Lesefehlern keine Wiederholungen |
Was ist zu beachten?
- Nach
Systemlaufwerk sichern
robocopy c: e:\backup /r:0 /s /xd %windir% /xf *.dll *.exe /xa:sh /maxage:365
Dieser Befehl sichert vom Laufwerk c: alle Dateien nach e:\backup, mit folgenden Ausnahmen:
/xd %windir% bewirkt, dass der Windows-Ordner (und alle Unterordner) nicht gesichert werden.
/xf *.dll *.exe schließt Programme aus (.dll und .exe sind die wichtigsten Programmdatei-Typen).
/xa:sh schließt versteckte und schreibgeschützte Dateien aus.
/maxage:365 schließt alle Dateien aus, deren letzte Änderung mehr als 365 Tage zurück liegt.
Jeder dieser optionalen Parameter kann weggelassen oder an Ihre Bedürfnisse angepasst werden.
Eigene Dateien sichern
robocopy %userprofile% e:\backup /s /r:0 /xd appdata anwendungsdaten "Lokale Einstellungen"
Der Parameter /XD schließt komplette Ordner aus dem Backup aus, deshalb werden „AppData“, „Anwendungsdaten“
und „Lokale Einstellungen“ nicht mitgesichert. Nach einem Leerzeichen können Sie weitere
Ordner auflisten, die nicht gesichert werden sollen.
Protokollierung
robocopy %userprofile% e:\backup /s /r:0 /unilog:e:\Protokoll.txt /np /tee
- /unilog:e:Protokoll.txt schreibt ein Protokoll in die Datei
- /np Der prozentuale Fortschritt bei großen Dateien wird nicht angezeigt
- /tee Die Protokollausgabe erfolgt gleichzeitig auf Bildschirm und in die Datei
Weitere wichtige 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. |
| /LEV:n | Kopiert nur die obersten n 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:
| 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