Bis dato hatte ich Robocopy in automatisierten Builds noch nicht verwendet, copy tat, was ich brauchte. Nun habe ich erweiterte Anforderungen und bin deswegen auf Robocopy umgestiegen. Gescheiterte Builds zeigten schnell auf, dass Robocopy wohl unterschiedlichste Exit codes einsetzt und diese behandelt werden müssen, möchte man einen durchlaufenden Build haben.

Robocopy Exit codes

Folgende Exit codes stellt Robocopy zur Verfügung (siehe auch Return codes that are used by Robocopy:

Value Description
0 No files were copied. No failure was encountered. No files were mismatched. The files already exist in the destination directory; therefore, the copy operation was skipped.
1 All files were copied successfully.
2 There are some additional files in the destination directory that are not present in the source directory. No files were copied.
3 Some files were copied. Additional files were present. No failure was encountered.
5 Some files were copied. Some files were mismatched. No failure was encountered.
6 Additional files and mismatched files exist. No files were copied and no failures were encountered. This means that the files already exist in the destination directory.
7 Files were copied, a file mismatch was present, and additional files were present.
8 Several files did not copy.

Alle Werte größer 8 deuten jedenfalls auf mindestens einen aufgetretenen Fehler hin. Bei einem Wert von 16 ist ein ernsthafter Fehler aufgetreten. Dabei wurden keine Dateien kopiert.

Exit codes im Batch behandeln

Da also auch nach erfolgreichem Kopiervorgang Exit codes größer 0 geliefert werden, sind diese in einem Batch-Aufruf extra zu behandeln. Wie dies funktioniert zeigt nachfolgendes Beispiel:

robocopy sourceDir targetDir /E /XC /XN /XO /NP

IF %ERRORLEVEL% LSS 8 goto finish
EXIT /B 1

:finish
EXIT /B 0

Hierbei wird für alle Robocopy Exit codes die kleiner als 8 sind, der Exit code 0 zurück geliefert, andernfalls 1. Darauf kann nun im Build Rücksicht genommen werden.

Gutes Gelingen!

Veröffentlicht von Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.

Schreibe einen Kommentar

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

Cookie-Einstellungen
Auf dieser Website werden Cookie verwendet. Diese werden für den Betrieb der Website benötigt oder helfen uns dabei, die Website zu verbessern.
Alle Cookies zulassen
Auswahl speichern
Individuelle Einstellungen
Individuelle Einstellungen
Dies ist eine Übersicht aller Cookies, die auf der Website verwendet werden. Sie haben die Möglichkeit, individuelle Cookie-Einstellungen vorzunehmen. Geben Sie einzelnen Cookies oder ganzen Gruppen Ihre Einwilligung. Essentielle Cookies lassen sich nicht deaktivieren.
Speichern
Abbrechen
Essenziell (1)
Essenzielle Cookies werden für die grundlegende Funktionalität der Website benötigt.
Cookies anzeigen