Su problema no está pasado, es que ese nivel de error requiere un tratamiento especial, no es como una variable de entorno común. La única prueba que puede hacer con errorlevel es probar si es mayor o igual que el valor.
Así que hay que probar errorlevel valores de mayor a menor, porque si errorlevel 1 continuación if errorlevel 1
será cierto, pero if errorlevel 0
se también ser verdad
setlocal
set /A sample =1
:first
type C:\test.txt | find "inserted"
if errorlevel 1 goto exam
if errorlevel 0 goto test
:test
echo "testloop" >> C:\testloop.txt
set /A sample = %sample% + 1
if %sample% LEQ 4 goto first
:exam
echo "exam loop" >> C:\examloop.txt
endlocal
si ha habilitado las extensiones de comando, y hay no hay una variable de entorno llamada ERRORLEVEL (no distingue entre mayúsculas y minúsculas). Entonces, en teoría, puede usar% ERRORLEVEL% como una variable de entorno común. Así que esto también debería funcionar
setlocal EnableExtensions
set /A sample =1
:first
type C:\test.txt | find "inserted"
if %errorlevel% EQU 1 goto exam
if %errorlevel% EQU 0 goto test
:test
echo "testloop" >> C:\testloop.txt
set /A sample = %sample% + 1
if %sample% LEQ 4 goto first
:exam
echo "exam loop" >> C:\examloop.txt
Stephan, gracias t o formateado correctamente, no por qué publicar el código en el formato apropiado. – user9133538
porque no formateaste nada. Ver [aquí] (https://stackoverflow.com/editing-help) para saber cómo hacerlo. – Stephan