Классическая проблема с пакетом - вы устанавливаете свой ERRORLEVEL и пытаетесь получить к нему доступ, используя %ERRORLEVEL%
в том же предложении DO()
.Расширение %VAR%
происходит во время разбора, и весь оператор FOR ... DO()
анализируется один раз, поэтому вы видите значение ERRORLEVEL до того, как оператор был выполнен.Очевидно, что это не сработает.
Джеб упомянул ответ в своем комментарии об исчезновении цитат.Ваша проблема будет решена, если вы setlocal enableDelayedExpansion
наверху, а затем использовать !ERRORLEVEL!
вместо %ERRORLEVEL%
.Кроме того, GregHNZ прав в том, что тест ERRORLEVEL должен выполняться сразу после вашего оператора FINDSTR.
Существуют другие способы обработки ERRORLEVEL в скобках, которые не требуют отложенного расширения:
Следующие тестыесли ERRORLEVEL больше или равен 1
IF ERRORLEVEL 1 (...) ELSE (...)
и ниже, условно выполняет команды на основе результата предыдущей команды
FindStr "SUCCESSFUL" test1.txt && (
commands to execute if FindStr succeeded
) || (
commands to execute if prior command failed.
)