与批处理文件中的返回值相关的问题

时间:2014-05-03 10:54:45

标签: batch-file return

在批处理文件中,我使用START命令启动多个可执行文件。一切都很好地运行。

我的问题是我希望我的批处理脚本接收每个可执行文件的返回错误代码。我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

通过CMD / C启动命令,以便将返回的ERRORLEVEL写入临时文件。然后等待创建所有返回文件,读取值并删除临时文件。

CMD / V:ON选项启用延迟扩展,以便从命令行访问返回的错误代码。当ERRORLEVEL = 1时,延迟扩展还会阻止!errorlevel!>cmd1.return被解释为stdout的重定向。

@echo off
setlocal disableDelayedExpansion

:: Make sure no temp return files exist yet
del *.return 2>nul

:: Launch your commands, and write return value to temp return files
start "" cmd /v:on /c "yourCommand1 & echo !errorlevel!>cmd1.return"
start "" cmd /v:on /c "yourCommand2 & echo !errorlevel!>cmd2.return"
start "" cmd /v:on /c "yourCommand3 & echo !errorlevel!>cmd3.return"

:Wait for commands to finish
for %%N in (1 2 3) do if not exist cmd%%N.return goto :Wait

:: Read return values and delete temp files
for %%N in (1 2 3) do <cmd%%N.return set /p "cmd%%N="
del *.return

:: Display results
echo command 1 return = %cmd1%
echo command 2 return = %cmd2%
echo command 3 return = %cmd3%

答案 1 :(得分:0)

运行&#39; if /?&#39;你会看到更多细节。 通常你做IF NOT ERRORLEVEL 0 command...。 顺便说一句 - 如果您使用CALL来运行executalbe,那么激活是串行的,您可以在退出时查看每个可执行的返回代码。

答案 2 :(得分:0)

start /wait prog
echo %ERRORLEVEL%
相关问题