bat脚本中if子句的errorlevel,一个大坑

这几天在写svnhook,需要用到bat,这里只记录下吧:

rem  检查tag
svnlook changed %REPOS% -t %TXN% | awk "{if(NR==1){str=$0}else{str=str\" \"$0}}END{print str}" | findstr "tags\/" > nul
if %errorlevel% == 0 (
    svnlook log %REPOS% -t %TXN% | awk "{if(NR==1){str=$0}else{str=str\" \"$0}}END{print str}"  | grep -E "^\[.{3}.*\]\[.{3}.*\].{10}.*" > nul
    if %errorlevel% gtr 0 goto :err_action6
) else (
    svnlook log %REPOS% -t %TXN% | awk "{if(NR==1){str=$0}else{str=str\" \"$0}}END{print str}"  | grep -E "^\[.{3}.*\].{10}.*" > nul
    if %errorlevel% gtr 0 goto :err_action5
)

 

上面的if子句中errorlevel一直拿不到正确的返回值,最后无奈,改成:

rem  检查tag

svnlook changed %REPOS% -t %TXN% | awk "{if(NR==1){str=$0}else{str=str\" \"$0}}END{print str}" | findstr "tags\/" > nul

if %errorlevel% == 0 (

::tag格式

:echo "tag --------------------" 1>&2

goto :tag_check

 

) else (

::非tag格式

:echo "no  tag --------------------" 1>&2

goto :no_tag_check

)

 

:tag_check

svnlook log %REPOS% -t %TXN% | awk "{if(NR==1){str=$0}else{str=str\" \"$0}}END{print str}"  | grep -E "^\[.{3}.*\]\[.{3}.*\].{10}.*" > nul

if %errorlevel% gtr 0 goto :err_action6

 

:no_tag_check

svnlook log %REPOS% -t %TXN% | awk "{if(NR==1){str=$0}else{str=str\" \"$0}}END{print str}" | grep -E "^\[.{3}.*\].{10}.*" > nul

if %errorlevel% gtr 0 goto :err_action5

 

备注:if子句的errorlevel拿不到正确的值,只能将子句goto出来,写在最外层

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值