🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

7 total messages Started by Arik Messerman Fri, 10 Oct 2003 12:31
R�ckgabewerte von Program in DOS auslesen
#32
Author: Arik Messerman
Date: Fri, 10 Oct 2003 12:31
11 lines
1376 bytes
Wie ist es m�glich das Resultat eines C++ Programmes unter DOS auszuwerten ?
Bsp: test.cpp -> test.exe
int main()
{
    int a; cin >> a; return a;
}
Jetzt m�chte ich unter DOS (z.B. in einer *.bat-Datei) das Programm test.exe
aufrufen und je nach R�ckgabewert weitere DOS-Anweisungen ausf�hren.
-- 
Arik Messerman
Antwort E-Mail: second123@freenet.de
Re: Rückgabewerte von Program in DOS auslesen
#33
Author: Markus Hagen
Date: Fri, 10 Oct 2003 13:37
25 lines
1625 bytes
Hi Arik,

> Jetzt m�chte ich unter DOS (z.B. in einer *.bat-Datei) das Programm
> test.exe aufrufen und je nach R�ckgabewert weitere DOS-Anweisungen
> ausf�hren.

@echo off
 test.exe
 if errorlevel 0 goto noerror
:error
 echo The program exited with an errorlevel >0.
 goto end
:noerror
 echo test successfully finished
 goto end
:end

(warum nur haben die aus Redmond der DOS-Shell keine Schleifen
spendiert?)

Wie DOS aus R�ckgabewerte reagiert, die nicht INT sind weiss ich nicht.


HTH
Markus
Re: R�ckgabewerte von Program in DOS auslesen
#34
Author: Arik Messerman
Date: Fri, 10 Oct 2003 13:54
15 lines
1531 bytes
> @echo off
>  test.exe
>  if errorlevel 0 goto noerror
> :error
>  echo The program exited with an errorlevel >0.
>  goto end
> :noerror
>  echo test successfully finished
>  goto end
> :end

Genauso habe ich es auch ausprobiert, aber unabh�ngig vom Ergebniswert (ob 0
oder 1 usw.) erhalte ich immer das gleiche:
"test successfully finished" , d. h. im DOS wird immer eine Null
registriert. Vielleicht doch noch eine Idee ?
Re: Rückgabewerte von Program in DOS auslesen
#35
Author: Norbert Demgensky
Date: Fri, 10 Oct 2003 14:59
18 lines
1606 bytes
Arik Messerman schrieb:
 
> Wie ist es m�glich das Resultat eines C++ Programmes unter DOS auszuwerten ?
> Bsp: test.cpp -> test.exe
> int main()
> {
>     int a; cin >> a; return a;
> }
> Jetzt m�chte ich unter DOS (z.B. in einer *.bat-Datei) das Programm test.exe
> aufrufen und je nach R�ckgabewert weitere DOS-Anweisungen ausf�hren.
Hallo Arik,

ich wei� nicht, wie es bei diesem Compiler ist, aber meinem alten Lattice
unter Dos gen�gte ein einfaches ein einfaches "return" im main nicht, sondern
er wollte immer ein explizites exit(a). Vielleicht geht's ja auch hier damit...

Gru�
Norbert
Re: R�ckgabewerte von Program in DOS auslesen
#36
Author: Arik Messerman
Date: Fri, 10 Oct 2003 15:18
30 lines
1720 bytes
> ich wei� nicht, wie es bei diesem Compiler ist, aber meinem alten Lattice
> unter Dos gen�gte ein einfaches ein einfaches "return" im main nicht,
sondern
> er wollte immer ein explizites exit(a). Vielleicht geht's ja auch hier
damit...

habe es damit ausprobiert, leider erfolglos:

void main()
{
    exit (1);
}    // compiliert als text.exe

TEST.bat:

@echo off
test.exe
if errorlevel 0 goto OK
echo Fehlercode >0
goto ENDE

:OK
echo Fehlercode 0, alles Okay
goto ENDE

:ENDE
@echo on

--> Ausf�hrung TEST.bat liefert: "Fehlercode 0, alles Okay", obwohl
"Fehlercode >0" ausgegeben werden sollte.
Re: Rückgabewerte von Program in DOS auslesen
#38
Author: Norbert Demgensky
Date: Sat, 11 Oct 2003 05:07
60 lines
2581 bytes
Arik Messerman schrieb:

> > ich wei� nicht, wie es bei diesem Compiler ist, aber meinem alten Lattice
> > unter Dos gen�gte ein einfaches ein einfaches "return" im main nicht,
> sondern
> > er wollte immer ein explizites exit(a). Vielleicht geht's ja auch hier
> damit...
> 
> habe es damit ausprobiert, leider erfolglos:
> 
> void main()
> {
>     exit (1);
> }    // compiliert als text.exe
> 
> TEST.bat:
> 
> @echo off
> test.exe
> if errorlevel 0 goto OK
> echo Fehlercode >0
> goto ENDE
> 
> :OK
> echo Fehlercode 0, alles Okay
> goto ENDE
> 
> :ENDE
> @echo on
> 
> --> Ausf�hrung TEST.bat liefert: "Fehlercode 0, alles Okay", obwohl
> "Fehlercode >0" ausgegeben werden sollte.

ich habe es mal ausprobiert und in der Tat verh�lt sich die Batchdatei anders als
erwartet. Irgendwie habe ich das Gef�hl, das war "fr�her" mal anders, aber die
Hilfe bei W2K sagt:

"ERRORLEVEL Nummer Bedingung ist erf�llt, wenn das zuletzt ausgef�hrte
                  Programm einen Code gr��er oder gleich der Nummer
                  zur�ckgibt."

Dieser Beschreibung nach kann das dann eigentlich auch nicht funktionieren,
sondern m�sste umgekehrt abgefragt werden:

@echo off
test.exe
if errorlevel 1 goto FEHLER
echo Fehlercode = 0, Alles OK
goto ENDE

:FEHLER
echo Fehlercode > 0, Fehler
goto ENDE

:ENDE
@echo on

Zumindest bei mir funktioniert's so auch...

Gru� Norbert
Re: R�ckgabewerte von Program in DOS auslesen
#43
Author: Sven Roeseler
Date: Mon, 19 Jan 2004 11:33
36 lines
1622 bytes
Am Fri, 10 Oct 2003 14:31:06 +0200 schrieb Arik Messerman:

> Wie ist es m�glich das Resultat eines C++ Programmes unter DOS auszuwerten ?
> ...
> Jetzt m�chte ich unter DOS (z.B. in einer *.bat-Datei) das Programm test.exe
> aufrufen und je nach R�ckgabewert weitere DOS-Anweisungen ausf�hren.

Mit

<code>
test.exe
IF ERRORLEVEL 2 GOTO L2
IF ERRORLEVEL 1 GOTO L1
GOTO Fehler

:L1
  ...
GOTO Ende

:L2
  ...
GOTO Ende

:Fehler
  ...
GOTO Ende

:Ende
</code>

Die Reihenfolge von "If Errorlevel" ist wichtig - allerdings wei� ich es
nicht mehr 100%ig in welcher sie stehen m�ssen, ist halt etwas her. Einfach
ausprobieren.

vG,
Sven
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads