Batchdatei bei Fehler abbrechen lassen
Hallo zusammen,
ich habe eine Batchdatei erstellt und möchte nun abschließend erreichen, dass diese bei Fehlern an der Stelle abbricht und nicht - wie normalerweise üblich- zum nächsten Befehl innerhalb des Stapels geht.
Hintergrund:
Die Datei arbeitet 5 Vorgänge ab - erst zum Schluß soll eine Kontrolldatei angelegt werden. Ist diese Datei vorhanden, wird eine Bestätigungsmail versendet.
Tritt bei Vorgang 2 aber ein Fehler auf, macht die Stapelverarbeitung, wenn möglich, bei Schritt 3 weiter und legt am Ende immer die Datei an - von Fehlern kein Hinweis.
Ziel ist es, bei einem Fehler, egal an welcher Stelle, die Datei zu beenden, den gesamten Stapelverarbeitsvorgang abzubrechen.
Wie ist das möglich?
Vielen Dank für die Hilfe!
Michael
ich habe eine Batchdatei erstellt und möchte nun abschließend erreichen, dass diese bei Fehlern an der Stelle abbricht und nicht - wie normalerweise üblich- zum nächsten Befehl innerhalb des Stapels geht.
Hintergrund:
Die Datei arbeitet 5 Vorgänge ab - erst zum Schluß soll eine Kontrolldatei angelegt werden. Ist diese Datei vorhanden, wird eine Bestätigungsmail versendet.
Tritt bei Vorgang 2 aber ein Fehler auf, macht die Stapelverarbeitung, wenn möglich, bei Schritt 3 weiter und legt am Ende immer die Datei an - von Fehlern kein Hinweis.
Ziel ist es, bei einem Fehler, egal an welcher Stelle, die Datei zu beenden, den gesamten Stapelverarbeitsvorgang abzubrechen.
Wie ist das möglich?
Vielen Dank für die Hilfe!
Michael
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95796
Url: https://administrator.de/forum/batchdatei-bei-fehler-abbrechen-lassen-95796.html
Ausgedruckt am: 23.12.2024 um 00:12 Uhr
7 Kommentare
Neuester Kommentar
Servus,
in solchen Fällen macht es Sinn die Batch in <"code"> <"/code"> - ohne die "" einzufügen.
Du kannst "probieren" %errorlevel% abzufragen oder if not exist oder oder oder...
Aber einfacher wird es, wenn "wir" deinen 5 Schritt Batch Schnippsel sehen und dir am "lebenden" Objekt helfen können.
Gruß
in solchen Fällen macht es Sinn die Batch in <"code"> <"/code"> - ohne die "" einzufügen.
Du kannst "probieren" %errorlevel% abzufragen oder if not exist oder oder oder...
Aber einfacher wird es, wenn "wir" deinen 5 Schritt Batch Schnippsel sehen und dir am "lebenden" Objekt helfen können.
Gruß
Unter der Vorraussetzung, daß c:\script\tc-mount.bat einen Errorlevel zurückgibt, wenn ein Fehler aufgetreten ist, kann man das mit
erreichen.
Errorlevel 0 ist erfolgreich, 1 oder höher gibt Fehler an.
Allerdings muß ein Script entsprechend programmiert sein, damit es Errorlevels zurückgibt. Ohne Rückgabe hast Du nicht viele Chancen mitzukriegen, ob das Skript erfolgreich lief.
CALL C:\scripts\tc-mount.bat
if errorlevel 1 exit /b
Errorlevel 0 ist erfolgreich, 1 oder höher gibt Fehler an.
Allerdings muß ein Script entsprechend programmiert sein, damit es Errorlevels zurückgibt. Ohne Rückgabe hast Du nicht viele Chancen mitzukriegen, ob das Skript erfolgreich lief.
Servus,
Ich würde es so lösen:
Ps:
Gruß
CALL C:\scripts\tc-mount.bat
"sagt" mir natürlich nicht so viel.Ich würde es so lösen:
if not exist \\meinserver\meinefreigabe>nul @echo Ziel nicht gefunden >> C:\scripts\save.log && goto end
if exist \\meinserver\meinefreigabe>nul net use x: \\meinserver\meinefreigabe && @echo Ziel gemappt >> C:\scripts\save.log
:end
C:\WINDOWS\system32\
kannst du dir schenken, denn "C:\WINDOWS\system32\" ist / sollte im Pfad stehen - einntbackup.exe meineparameter
reicht in dem Fall auch bzw.%windir%\system32\ntbackup.exe
"passt immer -egal - wie der Ordner von Windows nun heißt.Gruß
Wo: Direkt nach dem Befehl, bei dem ein Fehler auftreten kann.
Beispiel:
Wenn Ping erfolgreich ein Paket verschickt und eine Antwort bekommt, gibt Ping Errorlevel 0 zurück. Falls keine Antwort zurückkommt, dann gibt ping Errorlevel 1 zurück.
Und mit IF frage ich das ab und beende es entweder mit exit oder schicke ein Net send.
Beispiel:
ping DNS-Name
if errorlevel 1 exit /b
net send %computername% Ping erfolgreich
Und mit IF frage ich das ab und beende es entweder mit exit oder schicke ein Net send.