»» Hallo Robin,
»»
»» »» Wenn man myEasySync aus einer Batchdatei startet, kann es sinnvoll sein den Rückgabewert auszuwerten.
»»
»» Na das ist doch fein! Viele Programme sind heutzutage gar nicht mehr so freundlich, über Erfolg oder Misserfolg zu berichten.
»»
»» »» Rückgabewert Beschreibung
»» »» 0 Keine Fehler.
»» »» 1 Einige Dateien wurden nicht gesichert oder wiederhergestellt.
»» »» 2 Abbruch durch Benutzer.
»» »» 3 Nicht genug Platz im Zielordner.
»» »»
»» »» Wie kann ich denn in einer batch-Datei den Rückgabewert überhaupt abwarten und dann verwerten?
»»
»» Es zahlt sich ab und zu aus, wenn man auch "veraltete" Systeme wie DOS noch kennt.
»» Also das mit dem Abwarten ergibt sich von selbst, wenn dein Backup-Programm ein echtes DOS-Programm ist. Dann wird nämlich die Batchdatei solange nicht weiter bearbeitet, bis das aufgerufene Programm sich "fertig" meldet.
»» Wenn es sich um eine Windows-Applikation handelt, muss man nachhelfen. Dazu gibt es seit Windows 9x das "start"-Kommando speziell für Batchdateien. Mit dem Schalter /w kann man erzwingen, dass das Tool auf die Rückmeldung des aufgerufenen Programms wartet.
»» Für die Abfrage des Rückgabewerts vom aufgerufenen Programm kann man die errorlevel-Anweisung verwenden. Kombiniert könnte das in der Batchdatei also ungefähr so aussehen:
»»
»» ---8<----------------
»» @echo off
»» start /w myeasysync.exe
»» if errorlevel 3 goto OutOfSpace
»» if errorlevel 2 goto UserBreak
»» if errorlevel 1 goto FilesSkipped
»» echo Fertig, keine Fehler.
»» goto EOF
»»
»» :OutOfSpace
»» echo Nicht genügend Speicherplatz.
»» goto EOF
»»
»» :UserBreak
»» echo Abbruch durch Benutzer.
»» goto EOF
»»
»» :FilesSkipped
»» echo Nicht alle Dateien kopiert.
»» goto EOF
»»
»» :EOF
»» ---8<----------------
»»
»» Das Gefriemel mit den Labels und den vielen gotos ist leider nötig, weil Fallunterscheidungen nur auf Einzelanweisungen beschränkt sind und so etwas wie "else" nicht zur Verfügung steht.
»» Die Reihenfolge der errorlevel-Abfrage ist übrigens auch wichtig, weil die Abfrage nicht auf Rückgabewert==x prüft, sondern auf >=x. Deshalb würde errorlevel 2 auch zutreffen, wenn das Programm den Statuscode 3 abliefert.
»»
»» So long,
»»
»» Martin