我想知道是否有可能让批处理文件检查字符串。
我正在使用批处理文件来运行Maven命令,我想通过在脚本末尾搜索“FAILURE”字符串来检查是否有任何失败
我知道你可以FIND
在其他文件中,但你可以让它检查当前的输出,或者是将批处理文件输出保存为文本然后搜索的最佳解决方案吗?
例如,如果我有一个批处理文件echo Hello World
,它会打印Hello World
,然后我想搜索Hello
的输出并告诉我它找到了字符串{{ 1}}。
答案 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%
)