Corregir pruebas prioridad de ERRORLEVELs de archivo por lotes

Exención de responsabilidades de contenido KB retirado

Este artículo se refiere a productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Resumen

Cuando utilice varias instrucciones IF ERRORLEVEL en archivos por lotes, es importante el orden en el que los ERRORLEVELs se comprueban numéricamente. El orden correcto es descendente (de mayor a menor). Esta ordenación es de la forma en que se prueban ERRORLEVELs. La condición IF se establece en TRUE cuando el ERRORLEVEL es igual o mayor que el número ERRORLEVEL.

Más información

El siguiente fragmento del archivo de proceso por lotes muestra este comportamiento incorrecto:

   rem (execute a program which returns an errorlevel of 0 or 1)   if errorlevel 0 goto ZERO
if errorlevel 1 goto ONE
goto END
:ZERO
echo a Zero was returned!
goto END
:ONE
echo a One was returned!
:END

El ejemplo anterior siempre se dirige a la etiqueta "Cero", independientemente del éxito o fracaso. En este ejemplo funcionaría correctamente si las pruebas de ERRORLEVEL se realizan en orden descendente.


La manera correcta de escribir un archivo por lotes es la siguiente:
   rem (execute a program which returns an errorlevel of 0 or 1)   if errorlevel 1 goto ONE
if errorlevel 0 goto ZERO
goto END
:ZERO
echo a Zero was returned!
goto END
:ONE
echo a One was returned!
:END

Propiedades

Id. de artículo: 39585 - Última revisión: 17/01/2017 - Revisión: 1

Comentarios