как использовать goto в сценарии пакетной обработки

Я написал следующий код

setlocal

set /A sample =1 

:first

type C:\test.txt | find "inserted"

if %ERRORLEVEL% EQU 0 goto test

if %ERRORLEVEL% EQU 1 goto exam

: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

но это собирается маркировать "экзамен" даже при том, что ошибочный уровень не равен "1", помогите мне

6
задан kennytm 4 February 2010 в 07:10
поделиться

2 ответа

Ваша проблема не в goto, а в том, что уровень ошибок требует особой обработки, это не похоже на обычную переменную среды. Единственный тест, который вы можете сделать с помощью errorlevel, - это проверить, больше ли он или равен значению.

, поэтому вам нужно проверять значения уровня ошибки от самого высокого до самого низкого, потому что если уровень ошибки 1 , то , если уровень ошибки 1 будет истинным, но , если уровень ошибки 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
6
ответ дан 16 December 2019 в 21:39
поделиться

Вам необходимо перечислить уровни ошибок в порядке убывания (errorlevel2, errorlevel1, errorlevel0. ..).

См. это объяснение и пример .

2
ответ дан 16 December 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: