gpt4 book ai didi

windows - 如何为 FOR 循环中的每个命令获取 ERRORLEVEL?

转载 作者:行者123 更新时间:2023-12-03 11:09:41 25 4
gpt4 key购买 nike

我正在使用 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

我假设 PASS/FAIL 是您的 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

来自 documentation :

& : command1 & command2

Use to separate multiple commands on one command line. Cmd.exe runs the first command, and then the second command.

关于windows - 如何为 FOR 循环中的每个命令获取 ERRORLEVEL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46285830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com