如何在bat/cmd中在一个选项内,再嵌套一个选项

比如
echo 主人,您现在想做什么呢?
echo A.我好无聊
echo B.你好无聊
set /p choose=choose:
if "%choose%" == "A" goto A1:
if "%choose%" == "B" goto A2:
if "%choose%" == "a" goto A1:
if "%choose%" == "b" goto A2:
if "%choose%" neq "A""B""a""b" goto A0:
: A0
goto AA
: A1
echo 1.要不我们一起看看电影呗~
echo 2.要不...我们一起听歌?
echo 3.大不了一起看流星雨咯...
echo 4.那那...喔陪主人聊天好啦~嘻嘻(O_O)?
set /p choose2=choose:
if "%choose2%" == "1" goto B1:
if "%choose2%" == "2" goto B2:
if "%choose2%" == "3" goto B3:
if "%choose2%" == "4" goto B4:
if "%choose2%" neq "1""2""3""4" goto B0:
: B0
echo Sorry, the command is invalid, please re-enter...
goto BB
:B1
、、、、、、、、、、、

对提问标题内容感觉没什么需要解答的,"嵌套"嘛你已经做到了。
对于bat批处理,注意理解每条命令的语法以及它是会顺序执行的就没什么疑问了,剩下的是多练习积累经验体会。
所列代码提两处修改意见
1 if 命令加参数 /i 可以忽略大小写的 见 if/?
2 类似 if "%choose%" neq "A""B""a""b" goto A0 如果你是想判断除了a b之外(包括大小写)执行
goto A0 那么这种写法是不行的一般来说可以串起来写
if /i "%choose%" neq "a" if /i "%choose%" neq "b" goto A0
当然,如果是想排除更多列举内容,这样会使代码显得很“繁杂”,可以利用别的命令手段达到精简代码的目的如:
:begin
echo a ...选项1..
echo b....选项2
echo c... 选项3
echo q ... 退出
set/p choose=请输入选项代码字母:
echo %choose%|findstr /i "[a-cq]">nul&&goto :f%choose%
rem 这里利用顺序执行特点,符合条件的都goto 开了,能执行此处命令的就只有不合条件的了
echo 输入错误,重新输入
ping -n 3 127.1>nul&cls
goto :begin
:fa
rem 选项1命令集.
goto :next
:fb
rem 选项2命令集.
goto :next
.........
:next
pause
温馨提示:答案为网友推荐,仅供参考
相似回答