Wenn ich den Befehl „findstr /b“ in der Befehlszeile verwende und dann direkt im Anschluss den Fehlercode überprüfe, funktioniert es einwandfrei. Wenn ich dasselbe in einer Batchdatei mache, wird nur der Fehlercode 0 zurückgegeben.
Beispiel:
myfile.txt enthält den Wert „E2B-01-07,5974,3211“
findstr /b XXX myfile.txt
echo %errorlevel%
Dieser Code zeigt in einer Batchdatei fälschlicherweise 0 an, in der Eingabeaufforderung jedoch korrekt 1.
Antwort1
Wenn Sie dies in einem Klammerblock (FOR-Schleife, IF-Block) tun, dann müssen Sieverzögerte Expansionaktiviert vor der Struktur:
setlocal enabledelayedexpansion
und verwenden Sie Ausrufezeichen um den Variablennamen -!errorlevel!
z.B
@echo off
setlocal enabledelayedexpansion
for %%A in (*.txt) do (
echo File: %%A
findstr /b "E2B-01-07,5974,3211" "%%A"
echo Errorlevel: !errorlevel!
)