Ваша проблема не решена, ее уровень ошибки требует особого подхода, он не похож на обычную переменную окружения.Единственный тест, который вы можете выполнить с уровнем ошибки, - это проверить, является ли он больше или равен значению.
, поэтому вам нужно проверить значения уровня ошибки от самого высокого до самого низкого, потому что если уровень ошибки 1, тогда if errorlevel 1
будет истиннымно if errorlevel 0
будет также истинным
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
, если у вас включены расширения команд, и нет переменной среды с именем ERRORLEVEL (без учета регистра).Тогда в теории вы можете использовать% ERRORLEVEL% как обычную переменную среды.Так что это также должно работать
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