bat 文件。我有一部分代码如下所示
IF %Status% == Completed (
Echo Process has executed successfully
)
ELSE (
<Code to be added>
)
我的要求是,如果 Status 的值不是“Completed”,那么 bat 文件必须抛出异常或其他内容,以便 Jenkins 构建失败。有没有办法在bat文件中断言或抛出异常?请帮我解决这个问题?
批处理文件的每一行都被视为一个新命令。
Else
本身不是,所以当它在一个新线上时,它被视为一个。您需要将括号与 else
放在同一行。
此外,您需要双引号匹配项以确保消除任何可能的空格。我在
/i
语句中添加了 if
开关,以使匹配不区分大小写。
IF /i "%Status%" == "Completed" (
echo Process has executed successfully
) else (
echo Failed to build
pause
exit /b 1
)
另一种方法是不使用 else。
IF not /i "%Status%" == "Completed" goto :error
echo Process has executed successfully
echo other success code goes here
goto :eof
:error
echo Your code has failed.
pause
goto :eof
实施:
https://github.com/andry81/contools/tree/HEAD/Scripts/Tools/std/assert.bat
https://github.com/andry81/contools/tree/HEAD/Scripts/Tools/std/errlvl.bat
断言.bat:
@echo off
@if 0 %*
errlvl.bat:
@exit /b %~1
build.bat:
@echo off
rem drop error level
call;
if 1 == 2 (
rem
) else (
call errlvl.bat 123
assert.bat "build fail"
echo no execution after this line
)
>build.bat
"build fail" was unexpected at this time.
>echo %ERRORLEVEL%
123
注意:
assert.bat
不需要call
前缀,因为这是最后一条指令。
注意:您不能用
@if 0 ...
替换调用,因为在这种情况下,即使不评估外部 if
表达式,它也始终会评估。