Ao usar o comando "findstr /b" na linha de comando e verificar o código do nível de erro imediatamente a seguir, ele funciona bem. Quando faço o mesmo em um arquivo em lote, ele retorna apenas um código de erro 0.
Exemplo:
myfile.txt contém o valor "E2B-01-07,5974,3211"
findstr /b XXX myfile.txt
echo %errorlevel%
Este código exibirá 0 incorretamente em um arquivo em lote, mas exibirá 1 corretamente no prompt de comando.
Responder1
se você estiver fazendo isso em um bloco de colchetes (loop FOR, bloco IF), então você precisa terexpansão atrasadahabilitado antes da estrutura:
setlocal enabledelayedexpansion
e use pontos de exclamação ao redor do nome da variável -!errorlevel!
por exemplo
@echo off
setlocal enabledelayedexpansion
for %%A in (*.txt) do (
echo File: %%A
findstr /b "E2B-01-07,5974,3211" "%%A"
echo Errorlevel: !errorlevel!
)