1

任务是运行一个程序(同一个程序)十次,每次运行输出退出代码(主函数的返回值)。所以我想运行一个批处理文件(Windows),如下所示:

FOR /l %%x IN (1,1,10) DO (
    AutomatedTest.exe cip.log
    ECHO %ERRORLEVEL%
)

如果您直观地思考,上面的代码应该可以做到,但它不起作用,因为它正在运行的代码实际上是:

(
    AutomatedTest.exe cip.log
    ECHO 0
)

这件作品被执行了 10 次。

关于如何使其工作的任何想法?谢谢!

4

1 回答 1

3

您需要的是延迟变量扩展:

FOR /l %%x IN (1,1,10) DO (
    AutomatedTest.exe cip.log
    ECHO !ERRORLEVEL!
)

要启用延迟变量扩展,请在批处理之前使用 .SETLOCAL ENABLEDELAYEDEXPANSION或使用 CMD.EXE /V:ON.

另一种方法是使用子程序:

FOR /l %%x IN (1,1,10) DO CALL :Test
GOTO :EOF

:Test
AutomatedTest.exe cip.log
ECHO %ERRORLEVEL%
GOTO :EOF

还有一种方法是使用IF ERRORLEVEL.

于 2013-08-26T13:02:36.777 回答