簡體   English   中英

如何在FOR LOOP中獲取每個命令的錯誤級別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM