문자열이 발견되었는지 여부에 관계없이 Fndstr이 배치 파일에서 오류 수준 코드 0을 반환하는 이유는 무엇입니까?

문자열이 발견되었는지 여부에 관계없이 Fndstr이 배치 파일에서 오류 수준 코드 0을 반환하는 이유는 무엇입니까?

명령줄에서 "findstr /b" 명령을 사용한 후 바로 다음 오류 수준 코드를 확인하면 정상적으로 작동합니다. 배치 파일에서 동일한 작업을 수행하면 오류 코드 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!
)

관련 정보