gelöst Batchdatei bei Fehler abbrechen lassen
Schwinni79 (Level 1) - Jetzt verbinden
01.09.2008, aktualisiert 17:16 Uhr, 11873 Aufrufe, 7 Kommentare
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
7 Antworten
- LÖSUNG 60730 schreibt am 01.09.2008 um 14:14:23 Uhr
- LÖSUNG Schwinni79 schreibt am 01.09.2008 um 15:47:12 Uhr
- LÖSUNG AndreasHoster schreibt am 01.09.2008 um 16:08:56 Uhr
- LÖSUNG Schwinni79 schreibt am 01.09.2008 um 16:16:57 Uhr
- LÖSUNG AndreasHoster schreibt am 01.09.2008 um 17:15:42 Uhr
- LÖSUNG Schwinni79 schreibt am 01.09.2008 um 16:16:57 Uhr
- LÖSUNG 60730 schreibt am 01.09.2008 um 16:32:22 Uhr
- LÖSUNG Schwinni79 schreibt am 01.09.2008 um 16:45:49 Uhr
- LÖSUNG AndreasHoster schreibt am 01.09.2008 um 16:08:56 Uhr
- LÖSUNG Schwinni79 schreibt am 01.09.2008 um 15:47:12 Uhr
LÖSUNG 01.09.2008 um 14:14 Uhr
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ß
LÖSUNG 01.09.2008 um 15:47 Uhr
Hallo Timo,
hier der Code:
Wenn z.B. der Befehl
nicht ausgeführt werden konnte, weil die entsprechende Festplatte nicht erreichbat war, soll das Script abbrechen und nicht die Mail per blat.exe versenden...
Verstehst du, worauf ich hinaus will?
Michael
hier der Code:
01.
@ECHO OFF
02.
03.
04.
if not exist c:\scripts\save.log goto ausfuehren
05.
06.
del C:\scripts\save.log
07.
ECHO Datei wurde geloescht
08.
09.
10.
:ausfuehren
11.
12.
ECHO Alle Ueberpruefungen abgeschlossen - Sicherung beginnt jetzt!
13.
14.
15.
:: Neue Datei wird geschrieben
16.
17.
ECHO > C:\scripts\save.log
18.
19.
:: Bildschirmausgabe
20.
21.
ECHO Neue Logdatei wurde erstellt am %date% - %time%
22.
23.
:: Eintrag in Logdatei
24.
25.
ECHO Neue Logdatei wurde erstellt am %date% - %time% > C:\scripts\save.log
26.
27.
28.
::-------------------------------------------------------
29.
30.
:: Alte NTBACKUP Logfiles entfernen
31.
32.
DEL "C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\*.log"
33.
34.
ECHO Alte NTBACKUP Logdatei enfernt >> C:\scripts\save.log
35.
36.
::--------------------------------------------------------
37.
38.
ECHO NTBACKUP beginnt
39.
ECHO NTBACKUP beginnt >> C:\scripts\save.log
40.
41.
C:\WINDOWS\system32\ntbackup.exe backup "@C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\backup.bks" /n "backup.bkf wurde erstellt durch 27.08.2008 um 12:12" /d "Satz am 27.08.2008 um 12:12 erstellt" /v:yes /r:no /rs:no /hc:off /m normal /j "backup" /l:s /f "C:\BACKUP\backup.bkf"
42.
43.
44.
ECHO NTBACKUP abgeschlossen >> C:\scripts\save.log
45.
46.
::--------------------------------------------------------
47.
48.
49.
CALL C:\scripts\tc-mount.bat
50.
51.
52.
ECHO DASI-Platte eingebunden und entschluesselt >> C:\scripts\save.log
53.
54.
55.
ECHO Dateien werden kopiert >> C:\scripts\save.log
56.
57.
58.
CALL C:\scripts\sicherung-teil2-kix.bat
59.
60.
61.
ECHO Alle Dateien wurden erfolgreich kopiert >> C:\scripts\save.log
62.
63.
CALL C:\scripts\tc-dismount.bat
64.
65.
66.
ECHO DASI-Platte ausgebunden und verschluesselt >> C:\scripts\save.log
67.
68.
69.
ECHO Datensicherung abgeschlossen - %date% - %time% >> C:\scripts\save.log
70.
71.
REM Logdateien zusammenführen
72.
73.
ECHO LOGDATEIEN WERDEN ZUSAMMENGEFASST
74.
75.
ECHO. >> result.txt
76.
ECHO -----------ANFANG DASI-PROTOKOLL---------------------------- >> result.txt
77.
ECHO. >> result.txt
78.
79.
type save.log >> result.txt
80.
81.
ECHO. >> result.txt
82.
ECHO -----------ENDE DASI-PROTOKOLL---------------------------- >> result.txt
83.
ECHO. >> result.txt
84.
ECHO. >> result.txt
85.
ECHO. >> result.txt
86.
ECHO. >> result.txt
87.
ECHO. >> result.txt
88.
ECHO -----------ANFANG NTBACKUP-PROTOKOLL---------------------------- >> result.txt
89.
ECHO. >> result.txt
90.
91.
type "C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data\*.log" >> result.txt
92.
93.
ECHO. >> result.txt
94.
ECHO. >> result.txt
95.
ECHO -----------ENDE NTBACKUP-PROTOKOLL---------------------------- >> result.txt
96.
ECHO. >> result.txt
97.
98.
ECHO LOGADATEIEN WURDEN ZUSAMMENGEFASST
99.
100.
blat "C:\scripts\result.txt" -to info@domain.com -subject "Datensicherung erfolgreich!" -f info@domain.com
101.
ECHO EMAIL WIRD VERSENDET
102.
103.
pause
104.
01.
CALL C:\scripts\tc-mount.bat
Verstehst du, worauf ich hinaus will?
Michael
LÖSUNG 01.09.2008 um 16:08 Uhr
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.
01.
CALL C:\scripts\tc-mount.bat
02.
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.
LÖSUNG 01.09.2008 um 16:16 Uhr
Hallo zusammen,
wie stelle ich das denn mit den errorlevels an - das o.g. script mountet eine mit TrueCrypt verschlüsselte externe HDD. Wo und wie kontrolliere ich denn auf errorlevel und interpetiere sie anschließend?
Michael
wie stelle ich das denn mit den errorlevels an - das o.g. script mountet eine mit TrueCrypt verschlüsselte externe HDD. Wo und wie kontrolliere ich denn auf errorlevel und interpetiere sie anschließend?
Michael
LÖSUNG 01.09.2008 um 16:32 Uhr
Servus,
Ich würde es so lösen:
Ps:
>C:\WINDOWS\system32\
kannst du dir schenken, denn "C:\WINDOWS\system32\" ist / sollte im Pfad stehen - ein
Gruß
CALL C:\scripts\tc-mount.bat
"sagt" mir natürlich nicht so viel.Ich würde es so lösen:
01.
if not exist \\meinserver\meinefreigabe>nul @echo Ziel nicht gefunden >> C:\scripts\save.log && goto end
02.
if exist \\meinserver\meinefreigabe>nul net use x: \\meinserver\meinefreigabe && @echo Ziel gemappt >> C:\scripts\save.log
03.
:end
>C:\WINDOWS\system32\
kannst du dir schenken, denn "C:\WINDOWS\system32\" ist / sollte im Pfad stehen - ein
ntbackup.exe meineparameter
reicht in dem Fall auch bzw.%windir%\system32\ntbackup.exe
"passt immer -egal - wie der Ordner von Windows nun heißt.Gruß
LÖSUNG 01.09.2008 um 16:45 Uhr
Hallo Timo,
das ist die kopierte Synatx von Windows aus dem Taskplaner. Habe sie mir gar nicht so genau angesehen.
Vielen Dank für deine ausführliche Hilfe - ich werde das Script etwas umstellen und wie oben beschrieben anpassen. Die CALL- Befehle brauche ich an dieser Stelle gar nicht...
Gruß
Michael
das ist die kopierte Synatx von Windows aus dem Taskplaner. Habe sie mir gar nicht so genau angesehen.
Vielen Dank für deine ausführliche Hilfe - ich werde das Script etwas umstellen und wie oben beschrieben anpassen. Die CALL- Befehle brauche ich an dieser Stelle gar nicht...
Gruß
Michael
LÖSUNG 01.09.2008 um 17:15 Uhr
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:
01.
ping DNS-Name
02.
if errorlevel 1 exit /b
03.
net send %computername% Ping erfolgreich
Und mit IF frage ich das ab und beende es entweder mit exit oder schicke ein Net send.
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte