batch 中 goto label的问题

本文记录了作者在编写批处理脚本时遇到的问题,即使用CHOICE和GOTO语句进行条件判断时,脚本并未按预期执行。通过实验发现,若不在每个LABEL结尾使用GOTO退出,脚本会继续执行后续的所有LABEL,而添加GOTO语句后,脚本能正确跳转并结束。作者对此现象进行了初步猜想,并计划进一步验证。
摘要由CSDN通过智能技术生成

由于现在实习要接触到,所以今天认真看了一下batch脚本的代码,然后自己试着实现了一下,总体来说,因为我需要用到得脚本内容都是比较简单的,所以还是很顺利,但是在用到 choice 和 goto的时候还是有一些小问题,所以先记下来。

 

我想要写一个简单的choice语句,然后根据自己的选择跳到相应的模块,但是发现一个我现在无法理解的问题。

 

echo off

choice  /c cte  /m "creat,test,end" /t 10 /d c
if errorlevel 3 goto end
if errorlevel 2 goto test
if errorlevel 1 goto crea


:crea
echo you choose c
:EOF

:test
echo you choose t
:EOF

:end
echo you choose e
:EOF

:quit
echo quit

 

当我用上面这个脚本,也就是说没有在每一个label里面设置 goto的时候,虽然我选择的可能是c 但是还是会将所以的label顺序执行一遍,也就是说不会跳出label,虽然我在每一个label下面都写了:EOF, 也就是说表示这个label已经结束了。

当我选择c时,我期望的输出结果是:

you choose c

但是实际输出结果是:

you choose c
you choose t
you choose e
quit

 

但是当我在每一个label里面再添加一句goto语句,也就是变成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值