Ms-Dos - no comunicació .bat i .cpp

 
Vista:

no comunicació .bat i .cpp

Publicado por van (3 intervenciones) el 29/05/2001 18:33:56
El problemilla es el siguiente: Tengo un bat que llama a 2 .exe creados con Borland C para windows, según:

set path= (...)
%path%\iguals.exe
if errorlevel 1 goto copiamos
if errorlevel 2 goto nocopiamos
if errorlevel 3 goto error_open_file
if errorlevel 0 goto no_comunicacion
(...)
La cosa es que los .exe nunca retornan cero (según los he programado yo, sólo retornan 1, 2 ó 3). Pero el bat siempre me salta a la etiqueta no_comunicacion, por tanto, deduzco que los .exe me devuelven un 0 a al .bat. Por lo que he leído por ahí, un .exe que se ejecuta correctamente devuelve un cero, pero si yo le digo: return(1) el .bat debería recibir un 1, ¿no? Bueno, pues esto es. Los .exe funcionan correctamente independientemente del .bat. Alguien tiene alguna sugerencia de lo que puede estar pasando? GRACIAS*1000
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:no comunicació .bat i .cpp

Publicado por Diego Romero (103 intervenciones) el 30/05/2001 00:11:22
Mira, me ha pasado lo mismo que a vos y he descubierto que cuando el programa devuelve un valor a errorlevel en el bat tenes que evaluarlo en orden inverso, es decir primero preguntar si es igual al mayor valor posible, luego por el anteultimo y asi sucesivamente siendo el ultimo valor el 0, si lo haces como indicas en tu ejemplo por alguna extrña razón siempre toma como verdadero el if errorlevel 0 (?).
Este es el ejemplo que uso yo siendo errlv el programa que devuelve el errorlevel:
@echo off
errlv
if errorlevel 10 goto 10
if errorlevel 9 goto 9
if errorlevel 8 goto 8
if errorlevel 7 goto 7
if errorlevel 6 goto 6
if errorlevel 5 goto 5
if errorlevel 4 goto 4
if errorlevel 3 goto 3
if errorlevel 2 goto 2
if errorlevel 1 goto 1
echo 0
goto fin
:1
echo 1
goto fin
:2
echo 2
goto fin
:3
echo 3
goto fin
:4
echo 4
goto fin
:5
echo 5
goto fin
:6
echo 6
goto fin
:7
echo 7
goto fin
:8
echo 8
goto fin
:9
echo 9
goto fin
:10
echo 10 o Mas de 10
:fin
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar