Robocopy und seine Rückgabewerte
Im Rahmen einer Datensicherung mit Acronis sollte das Sicherungsarchiv auf Wechselmedien gespiegelt werden. Dazu bietet sich das Kommandozeilentool Robocopy an, das seit Jahren zum Lieferumfang von Windows gehört und extrem mächtig ist. Grundsätzlich hat es funktioniert, aber der Abschlusstask mit Robocopy wurde von Acronis immer als fehlerhaft bewertet. Nach einer Weile war die Ursache klar: Kommandozeilenbefehle liefern als Rückgabewert üblicherweise
= 0: kein Fehler > 0: Fehler
Robocopy belegt aber die Codes 0-7 mit Erfolgsmeldungen. Um diesem Verhalten gerecht zu werden, Acronis im Erfolgsfalle aber Null zurückzugeben, wurde eine kleine Batchdatei geschrieben, welche die ErrorLevel 0-7 in 0 umwandelt und in allen anderen Fällen die 8 zurückgibt (der reale Rückgabewert ist bei Fehlern egal, da Robocopy eine Logdatei schreiben kann).
robocopy "Quellpfad" "Zielpfad" "*.TIB" /PURGE if NOT errorlevel 8 (EXIT /B 0) EXIT /B 8
Interessant ist hier besonders die Abfrage
if NOT errorlevel 8
, welche quasi für
if errorlevel < 7
steht. Wer nicht so oft Batch-Dateien schreibt, wird von diesem Verhalten oft überrascht.