如何在批处理文件脚本的循环中打印程序的返回值?

Posted

技术标签:

【中文标题】如何在批处理文件脚本的循环中打印程序的返回值?【英文标题】:How do I print the return value of a program in a loop in a batch file script? 【发布时间】:2013-08-26 12:10:47 【问题描述】:

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

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

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

(
    AutomatedTest.exe cip.log
    ECHO 0
)

这首曲子执行了 10 次。

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

另一种方法是使用IF ERRORLEVEL

【讨论】:

以上是关于如何在批处理文件脚本的循环中打印程序的返回值?的主要内容,如果未能解决你的问题,请参考以下文章

条件For循环在批处理文件中不起作用

从 For 循环中获取值的批处理脚本

Java或C#调用命令行批处理命令如何获得返回值

批量打印脚本的退出代码

bat批处理 使用runas执行某一命令后如何获得返回值?

如何在批处理文件中循环注册表值