Почему Fndstr возвращает код ошибки 0 в пакетном файле независимо от того, найдена строка или нет?

Почему Fndstr возвращает код ошибки 0 в пакетном файле независимо от того, найдена строка или нет?

При использовании команды "findstr /b" в командной строке и последующей проверке кода errorlevel все работает нормально. Когда я делаю то же самое в пакетном файле, он возвращает только код ошибки 0.

Пример:

myfile.txt содержит значение "E2B-01-07,5974,3211"

findstr /b XXX myfile.txt
echo %errorlevel%

Этот код неправильно отобразит 0 в пакетном файле, но правильно отобразит 1 в командной строке.

решение1

если вы делаете это в блоке скобок (цикл FOR, блок IF), то вам нужно иметьотсроченное расширениевключено перед структурой:

setlocal enabledelayedexpansion

и используйте восклицательные знаки вокруг имени переменной -!errorlevel!

например

@echo off
setlocal enabledelayedexpansion
for %%A in (*.txt) do (
    echo File:       %%A
    findstr /b "E2B-01-07,5974,3211" "%%A"
    echo Errorlevel: !errorlevel!
)

Связанный контент