Batch file &引用;如果;如果输入的值为';别无选择
如果我使用If命令但输入一个非选项的值,它将转到随机部分,例如:Batch file &引用;如果;如果输入的值为';别无选择,batch-file,if-statement,Batch File,If Statement,如果我使用If命令但输入一个非选项的值,它将转到随机部分,例如: set /p test if %test% == x goto home if %test% == y goto home2 :home echo hi pause :home2 echo how are you pause :pie echo want some pie? 如果我输入x,它将返回到home,但如果我输入c或w,它将返回pie或home2,我如何修复它?正如@LotPings所说: 如果前两个If不触发
set /p test
if %test% == x goto home
if %test% == y goto home2
:home
echo hi
pause
:home2
echo how are you
pause
:pie
echo want some pie?
如果我输入x,它将返回到home,但如果我输入c或w,它将返回pie或home2,我如何修复它?正如@LotPings所说:
如果前两个If不触发程序流直接导致:home,那又怎样?同样在暂停之后,它将继续使用所有其他标签。set/p测试中缺少一个等号=最后一个带有c和w的断言是无意义的 第一个问题的解决方案:添加一个
goto
语句,重新向用户询问有效答案
第二个问题的解决方案:我不认为我需要解释太多
顺便说一下,下面是正确的代码:
:prompt
set /p test=Enter option:
if "%test%" == "x" goto home
if "%test%" == "y" goto home2
goto :prompt
:home
echo hi
pause
:home2
echo how are you
pause
:pie
echo want some pie?
pause
如果前两个If不触发程序流直接导致:home,那又怎样?暂停后,它还会继续与所有其他标签一起使用。
set/p test=
中缺少一个等号。最后一个用c和w的断言是无意义的。@1337Nico如果唯一可接受的输入是x
或y
,则使用该命令,这比使用set/p
要好得多,因为用户可以自由输入任何内容,x
或y
或“让批处理文件在出现语法错误时退出,或者做一些奇怪的事情>!可能的副本@ 1337尼科-如果你觉得我的答案是有用的,请考虑点击复选标记旁边的我的答案接受它。