Batch file 如何在dos批处理文件中检查call命令的状态

Batch file 如何在dos批处理文件中检查call命令的状态,batch-file,dos,batch-processing,Batch File,Dos,Batch Processing,我有一个包含这些内容的批处理文件名xyz.bat @echo off echo 1.Cleaning all four project. call apacheant\bin\ant -buildfile clean-all.xml 当第一次调用结束时,它在控制台上写入生成成功或生成失败。 如何验证此调用是否失败或通过?此外,基于此条件,我想决定下一次调用的执行 当然,如果需要,echo…可以替换为“set-antstatus=success” 不要试图使用ERRORLEVEL来控制处

我有一个包含这些内容的批处理文件名xyz.bat

 @echo off
 echo  1.Cleaning all four project.
 call apacheant\bin\ant -buildfile clean-all.xml
当第一次调用结束时,它在控制台上写入生成成功或生成失败。
如何验证此调用是否失败或通过?此外,基于此条件,我想决定下一次调用的执行

当然,如果需要,
echo…
可以替换为“set-antstatus=success”

不要试图使用ERRORLEVEL来控制处理,因为许多命令将更改ERRORLEVEL以报告其自身的状态

也可能是
ANT
在终止时返回状态。你可以跟我核实一下

echo %errorlevel%
ant
步骤之后。如果它返回errorlevel,则不需要创建和解释日志文件

如果ERRORLEVEL语法为

if errorlevel n Command_if_errorlevel_is_n_OR_GREATER_THAN_n

谢谢,但是现在做其他的任务,如果可以的话会在1小时后尝试,它会被标记为答案:)当然可以,但是我知道,最好使用其他的结构
%ERRORLEVEL%
是一个
魔术变量。
它不会出现在
集合
列表中,但如果使用它,则首先搜索环境中的值,如果在环境中找不到该变量,则CMD将获取系统值。使用
if errorlevel n
构造始终从系统加载,并在块内工作(在
if
FOR
的括号之间),因此对我来说,最好习惯性地使用
if errorlevel
,这样可以完全避免潜在的陷阱。YMMV。
echo %errorlevel%
if errorlevel n Command_if_errorlevel_is_n_OR_GREATER_THAN_n