memaaa
Goto Top

BatchFile mit Errorlevel

Hallo

Da ich mit Batchprogrammierung nur Grundlegende Erfahrungen habe frage ich hier nach.

und zwar habe ich ein Batchfile, (Build.bat) das mir eine ein Programm ausführt und dieses Programm startet dann ein Projekt. Der Befehl sieht ganz einfach aus:


"C:\Keil_V471\UV4\UV4.exe" -b AltmannHMI.uvproj -jO

alles schön und gut das Programm startet mir mein Project aber gibt einen Fehler aus. Nun vermute ich aber das dies kein Fehler im Project ist da ich es schon öfters getestet habe :D. sondern eine Warnung die er nicht erkennt und sie so als Fehler ausgibt.

Ich habe folgende Errorlevels die ich jetzt abfangen möchte.

ERRORLEVEL 0 = No Errors or Warnings
ERRORLEVEL 1 = Warnings Only
ERRORLEVEL 2 = Errors
ERRORLEVEL 3 = Fatal Error
ERRORLEVEL 11 = Cannot open Project file for writing
ERRORLEVEL 12 = Device with given Name in not found in database
ERRORLEVEL 13 = Error writing Project file
ERRORLEVEL 15 = Error reading Import XML file

Das Programm sollte alles was über Level (1=Warnings Only) geht als Fehler ausgeben.

Wie kann ich das am besten lösen oder abfangen?
Bitte um Hilfe komm leider nicht weiter.

Viele Grüsse
MemaAa

Content-ID: 240132

Url: https://administrator.de/contentid/240132

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

Endoro
Endoro 05.06.2014 um 10:26:11 Uhr
Goto Top
Hey,
frage die Variable ERRORLEVEL ab:
C:\Keil_V471\UV4\UV4.exe -b AltmannHMI.uvproj -jO 
IF %ERRORLEVEL% GTR 1 GOTO:FEHLER
REM hier weiter, wenn kein Fehler
.
.
.
GOTO:EOF

:FEHLER
hier weiter, wenn Fehler
Gruss, Endoro
MemaAa
MemaAa 05.06.2014 um 11:01:17 Uhr
Goto Top
Hmm.. Hab es ausprobiert leider gibt er immer noch einen Fehler aus.

So wie du es gemacht hast würde das doch bedeuten das Errorlevel 1 ein Fehler ist oder nicht?
Gersen
Gersen 05.06.2014 um 11:31:30 Uhr
Goto Top
Hallo,

es bedeutet, dass alles größer als 1 ein Fehler ist (GTR = greater).

Gruß,
Gersen
Endoro
Lösung Endoro 05.06.2014 aktualisiert um 12:13:15 Uhr
Goto Top
Zitat von @MemaAa:

Hmm.. Hab es ausprobiert leider gibt er immer noch einen Fehler aus.
Die Ausgabe ist unabhängig von der Abfrage. Wenn sich dein Programm regelkonform verhält, kannst du die Ausgabe so abfangen:
C:\Keil_V471\UV4\UV4.exe -b AltmannHMI.uvproj -jO 2>nul
IF %ERRORLEVEL% GTR 1 GOTO:FEHLER
REM hier weiter, wenn kein Fehler
.
.
.
GOTO:EOF

:FEHLER
hier weiter, wenn Fehler
Gruss, Endoro
MemaAa
MemaAa 05.06.2014 um 12:13:36 Uhr
Goto Top
Stimmt! Danke für die Hilfe.
bastla
bastla 05.06.2014 um 15:00:06 Uhr
Goto Top
... und für Fälle, in denen die Abfrage zB innerhalb einer Klammer vorkommt und daher "delayedExpansion" voraussetzen würde:
IF ERRORLEVEL 2 GOTO:FEHLER
Grüße
bastla
MemaAa
MemaAa 05.06.2014 um 16:24:52 Uhr
Goto Top
Hallo Leute

Also irgendwie funktioniert das doch nicht. Ich hab es so abgefragt und bei der ausgabe kommt dann:

if 1 gtr 1 goto:Fehler

meldet er mir dann trotzdem einen Fehler. Ich habe es jetzt mit der Lösung von Endoro versucht. Weiss nicht wo da das Problem liegen könnte.

Jemand eine Ahnung?

Grüsse
MemaAa