[英]How to get ERRORLEVEL for each command in FOR LOOP?
我正在使用Windows批處理文件比較2個文件夾中的文件列表。 無論是否通過,它都會打印結果。
當前工作批處理文件:
for /F "tokens=*" %%f in (list.txt) do compare Folder1\%%f.png Folder2\%%f.png
如果有3個文件,則運行此命令后的輸出將如下所示:
PASS
FAIL
PASS
如果我在此處回顯%ERRORLEVEL%,則它將返回0,因為for循環運行良好。
echo %ERRORLEVEL%
0
我的要求
而是在FOR循環中回顯每個命令的結果。
我的預期輸出
0
1
0
如何更改批處理文件以實現此目的?
假設FAIL更改了ERRORLEVEL
,請使用&
為每個命令回顯ERRORLEVEL
:
SETLOCAL EnableDelayedExpansion
for /F "tokens=*" %%f in (list.txt) do compare Folder1\%%f.png Folder2\%%f.png & echo !ERRORLEVEL!
ENDLOCAL
輸出:
PASS
0
FAIL
1
PASS
0
我假設通過/失敗是您的compare
實用程序的輸出。 要隱藏此輸出,請使用重定向>
到NUL
如下所示:
SETLOCAL EnableDelayedExpansion
for /F "tokens=*" %%f in (list.txt) do compare Folder1\%%f.png Folder2\%%f.png > NUL & echo !ERRORLEVEL!
ENDLOCAL
輸出:
0
1
0
從文檔 :
&:command1&command2
用於在一個命令行上分隔多個命令。 Cmd.exe運行第一個命令,然后運行第二個命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.