Ich vergleiche eine Liste von Dateien aus 2 Ordnern mit einer Windows-Batch-Datei. Es gibt die Ergebnisse aus, ob PASS/FAIL.Wie erhalten Sie ERRORLEVEL für jeden Befehl in FOR LOOP?
Aktuelle Arbeits Batch File:
for /F "tokens=*" %%f in (list.txt) do compare Folder1\%%f.png Folder2\%%f.png
Wenn es 3 Dateien, würde so aussehen der Ausgang nach Ausführung dieses Befehls:
PASS
FAIL
PASS
Wenn ich die% Error-% hier echo , würde 0 zurückgeben, weil die for-Schleife gut lief.
echo %ERRORLEVEL%
0
meine Anforderung
Echo das Ergebnis jedes Befehls in der FOR-Schleife statt.
Mein Erwarteter Ausgang
0
1
0
Wie ändere ich die Batch-Datei, dies zu erreichen?
Dies kann nicht funktionieren, weil: 1. Sie [verzögerte Erweiterung] (http://ss64.com/nt/delayedexpansion.html) für '! ErrorLevel!' Benötigen, um den ErrorLevel der Iteration zu erhalten; Andernfalls wird der beim Lesen der gesamten Befehlszeile vorhandene ErrorLevel zurückgegeben. 2. ['&&'] (http://ss64.com/nt/syntax-conditional.html) verhindert, dass Fehlerlevel ungleich Null zurückgegeben werden, Sie müssen '&' stattdessen verwenden; – aschipfl
@aschipfl, Entschuldigung für den Blick. Ich habe die Antwort aktualisiert und Dokumentation hinzugefügt. Danke für das Aufzeigen. – sohaib
Ich habe das versucht. Die folgende Ausgabe erhalten: PASS ! ERRORLEVEL! FEHLER ! ERRORLEVEL! PASS ! ERRORLEVEL! – InsecureNoob