Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batchdatei bei Fehler abbrechen lassen

Frage Entwicklung Batch & Shell

Mitglied: Schwinni79

Schwinni79 (Level 1) - Jetzt verbinden

01.09.2008, aktualisiert 17:16 Uhr, 10612 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
Mitglied: 60730
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ß
Bitte warten ..
Mitglied: Schwinni79
01.09.2008 um 15:47 Uhr
Hallo Timo,

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.
 
Wenn z.B. der Befehl

01.
CALL C:\scripts\tc-mount.bat
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
Bitte warten ..
Mitglied: AndreasHoster
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
01.
CALL C:\scripts\tc-mount.bat 
02.
if errorlevel 1 exit /b
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.
Bitte warten ..
Mitglied: Schwinni79
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
Bitte warten ..
Mitglied: 60730
01.09.2008 um 16:32 Uhr
Servus,

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
Ps:
>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ß
Bitte warten ..
Mitglied: Schwinni79
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
Bitte warten ..
Mitglied: AndreasHoster
01.09.2008 um 17:15 Uhr
Wo: Direkt nach dem Befehl, bei dem ein Fehler auftreten kann.
Beispiel:
01.
ping DNS-Name 
02.
if errorlevel 1 exit /b 
03.
net send %computername% Ping erfolgreich
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.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (4)

Frage von JayyyH zum Thema Switche und Hubs ...

Vmware
Veeam für VM Ware Backup Fehler (1)

Frage von JoergN1968 zum Thema Vmware ...

Virtualisierung
gelöst Interne Netzwerke untereinander kommunizieren lassen (9)

Frage von chelewae zum Thema Virtualisierung ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (10)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...