批处理文件检查自己的输出?

时间:2012-10-24 19:05:25

标签: maven command-line batch-file

我想知道是否有可能让批处理文件检查字符串。

我正在使用批处理文件来运行Maven命令,我想通过在脚本末尾搜索“FAILURE”字符串来检查是否有任何失败

我知道你可以FIND在其他文件中,但你可以让它检查当前的输出,或者是将批处理文件输出保存为文本然后搜索的最佳解决方案吗?

例如,如果我有一个批处理文件echo Hello World,它会打印Hello World,然后我想搜索Hello的输出并告诉我它找到了字符串{{ 1}}。

4 个答案:

答案 0 :(得分:8)

我喜欢vane的想法,对mvn提供的返回代码采取行动,但我不想使用ERRORLEVEL,而是喜欢使用||运算符。 ||之后的命令仅在先前命令失败时才会被执行。

::initialize error flag to undefined
set "mvnErr="

::run your Maven command and define the error flag if there was an error
call mvn {your arguments here} || set mvnErr=1

::You can now take action if there was an error
if defined mvnErr echo there was a Maven error

答案 1 :(得分:6)

您可以通过在每个Maven命令后检查errorlevel来执行此操作。例如

@ECHO OFF

set hasErrors=0

REM execute maven command here
if not errorlevel 0 set hasErrors=1

REM more batch command and similar checking ...

if %hasErrors%==1 (
    echo print your error info or do whatever
)

答案 2 :(得分:1)

在前两个答案的基础上,我认为这给了两个世界的最好。 ||语法简短易读,每个命令之前的IF语句确保处理仅在先前操作成功时进行。

set hasErrors=0
IF %hasErrors%==0 call mvn -f ./mycoservices/pom.xml install || set hasErrors=1
IF %hasErrors%==0 call mvn -f ./mycostatic/pom.xml install || set hasErrors=1
IF %hasErrors%==0 call mvn -f ./mycoweb/pom.xml install || set hasErrors=1
IF %hasErrors%==0 call mvn -f ./mycowebbundle/pom.xml install || set hasErrors=1

答案 3 :(得分:0)

为什么不在失败时退出批次

if %ERRORLEVEL% NEQ 0 (
 echo exit /b %errorlevel%
 exit /b %errorlevel%
)