7.00 básica puede devolver el código de salida (nivel de Error) en el archivo de proceso por lotes

Declinación de responsabilidades del contenido retirado de KB

Este artículo trataba sobre los productos para los cuales Microsoft ya no ofrece soporte técnico. Por lo tanto, este artículo se ofrece "tal cual" y ya no se actualizará más.

Resumen

Procesamiento por lotes de MS-DOS (. Archivos BAT) pueden utilizar una instrucción "IF ERRORLEVEL n" para detectar niveles de códigos de salida devueltos por algunos programas.


Sin embargo, las únicas versiones de Microsoft Basic que permitir que un programa devuelve un código de nivel de error para MS-DOS son Microsoft Basic Professional desarrollo sistema (PDS) versiones 7.00 y 7.10. La n final o STOP n instrucción devuelve error nivel n del archivo por lotes que invoca la básica 7.00 o 7.10. Programa EXE. La instrucción IF ERRORLEVEL n el archivo por lotes puede detectar si el código de salida devuelto es igual o mayor que n.


En las demás versiones de Microsoft Basic, el código de nivel (salida) de error devuelto por un programa básico se controla mediante el módulo de tiempo de ejecución básico, no por el programa. Como alternativa, puede crear un archivo en el programa básico para servir como un indicador cuando se produce una determinada condición. El archivo por lotes que llama el programa, a continuación, puede comprobar la existencia del archivo marcador en lugar de buscar un nivel de error. En archivos por lotes, puede utilizarse el comando "IF EXIST archivo".


El programa volver a un nivel de error a los archivos de proceso por lotes de MS-DOS no permiten los siguientes productos:


  1. Versiones de QuickBasic 1,00, 1.01, 1.02, 2.00, 2.01, 3.00, 4.00, 4.00b y 4.50 para MS-DOS
  2. Versiones de Microsoft GW-Basic 3.20, 3.22 y 3.23 para MS-DOS
  3. Versiones de Microsoft Basic Compiler 5,35 y 5,36 para MS-DOS y versiones 6.00 y 6.00b para MS-DOS y MS OS/2

Más información

El programa básico no debe intentar invocar las interrupciones de MS-DOS (llame a INTERRUPT) para terminar el programa con un nivel de error; de lo contrario, pueden producirse resultados extraños y el equipo puede dejar de responder. Basic debe controlar la finalización del programa por sí mismo.

Básica 7.00 o 7.10 puede devolver códigos de salida (ERRORLEVEL) al archivo de proceso por lotes

Un archivo. Programa EXE compilado en Basic 7.00 o 7.10 puede utilizar la instrucción de n % END o STOP n % para devolver un código de salida (n %) a MS-DOS, como sigue:
   ' TEST.BAS   PRINT "This is a Basic program that returns an exit code of 5."
n% = 5
END n%

El código de salida puede ser atrapado en un archivo por lotes de MS-DOS con el n IF ERRORLEVEL instrucción GOTO, como sigue:
   TEST   ECHO OFF
IF NOT ERRORLEVEL 1 GOTO DONE
ECHO An error occurred with exit code 1 or higher.
:DONE
ECHO End of batch file.

Utilizando un archivo como una marca para un archivo por lotes

La siguiente técnica permite cualquier versión básica dar un simple mensaje de sí o no en un archivo de proceso por lotes.


El siguiente archivo por lotes, ERRT. BAT, llame al programa básico ERRTST, que cae detrás del archivo por lotes. A continuación, comprueba la existencia del archivo ERRFIL (que es un nombre arbitrario) para ver si se produjo un error mientras se ejecuta el programa básico:
   echo off   del errfil
errtst
if not exist errfil goto end
echo An error occurred during program running
:end
echo End of batch file

El siguiente archivo es ERRTST. BAS; crea el archivo de errores si no puede abrir el archivo basura. DAT:
' set up to error out if "GARBAGE.DAT" does not existON ERROR GOTO errorlevel
OPEN "garbage.dat" FOR INPUT AS #1
CLOSE #1
END
errorlevel:
CLOSE #1
OPEN "errfil" FOR OUTPUT AS #1 'Create file that acts as a flag
CLOSE #1
SYSTEM ' Returns to DOS.

Para demostrar este procedimiento, compile y vincule ERRTST. BAS como sigue:
   BC ERRTST.BAS;   LINK ERRTST.OBJ;

Ahora ejecute el archivo por lotes ERRT. BAT. Si el programa básico no encuentra basura. DAT, ERRT. BAT muestra "Error durante la ejecución del programa".