批处理脚本跳转异常求助:输入任意内容均返回:EditUser标签
批处理脚本跳转失效问题排查
嘿,我瞅了你的这段批处理代码,一眼就发现了问题所在——if判断里的变量引用语法错了!
先看看你原代码里的判断逻辑:
:EditUser cls echo You chose to edit a user echo ======================== echo 1. Change Password echo 2. Change Account Type echo 3. Go back to Users echo. set /p CHOICE6=What do you want to do? if CHOICE6==1 goto PassChange if CHOICE6==2 goto PrivChange if CHOICE6==3 goto Users goto EditUser
在Windows批处理脚本里,要读取变量的实际值,必须给变量名加上百分号%包裹起来。你直接写CHOICE6的话,脚本会把它当成一个固定字符串,而不是你输入的变量值。所以不管你输入1、2还是3,这三个判断都永远不会成立,最后必然会执行goto EditUser跳回标签开头。
把判断语句改成下面这样就能正常跳转了:
:EditUser cls echo You chose to edit a user echo ======================== echo 1. Change Password echo 2. Change Account Type echo 3. Go back to Users echo. set /p CHOICE6=What do you want to do? if %CHOICE6%==1 goto PassChange if %CHOICE6%==2 goto PrivChange if %CHOICE6%==3 goto Users goto EditUser
另外提个小优化建议:set /p允许用户直接按回车输入空白内容,这时候CHOICE6会是空值,同样会触发跳回逻辑。如果想处理这种情况,可以加个空白判断,比如:
set "CHOICE6=" set /p CHOICE6=What do you want to do? if not defined CHOICE6 goto EditUser # 处理用户直接按回车的情况 if %CHOICE6%==1 goto PassChange if %CHOICE6%==2 goto PrivChange if %CHOICE6%==3 goto Users goto EditUser
内容的提问来源于stack exchange,提问作者MangoM3lon
相关产品推荐
相关产品推荐

