»» 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.
Hi Martin,
sehe ich ähnlich, das war auch einer der Gründe dafür, dieses Programm auszuwählen :-)
»»
»» »» 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.
So isses.
»» 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.
"Mein" Programm ist kein DOS-Programm. Witzigerweise ist es aber unter win xp so, daß die Batch auf das Programmende wartet, unter Win 9.x aber nicht.
»» 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.
Genial, daß Du das weißt. Supi. Genau das fehlte mir.
»» 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<----------------
»»
Ok. Das hatte ich mir schon gedacht, daß das über die Errorlevel geht, also ähnlich wie meine Abfrage, ob der User Ja, Nein oder Abbrechen wählt, da habe ich das auch so gemacht.
»» 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.
Ok. Verstanden. Nein, der entscheidende Tip war das /w. Das werde ich gleich im Büro austesten.
Danke, natürlich auch an alle anderen Helfer.
Grüße, Robin
»»
»» So long,
»»
»» Martin