这个IF NOT声明有什么问题?

时间:2017-03-02 13:28:05

标签: batch-file

这段代码应该是这样的,如果我按下1-4会进入选项1 - 4,如果我按下别的东西就会说它不是一个选项。但是,如果我输入其他内容,它仍会进行调试。

我已多次检查代码,但找不到错误。我甚至把它比作这样实际工作的代码,我甚至按Ctrl-c Ctrl-v'ed它仍然无法工作。

:admin
cls
color %debug%
echo You have accessed the admin debug menu
echo Do what you wan't
echo [1] Set Debug color
echo [2] Set Default color
echo [3] Set Warning color
echo [4] Exit
set /p "lol=> "
IF /i %lol%==1 goto dbg if NOT goto 9
IF /i %lol%==2 goto dfc if NOT goto 9
IF /i %lol%==3 goto wnc if NOT goto 9
IF /i %lol%==4 goto start if NOT goto 9

:dbg
cls
color %debug%
echo Set Debug color
set /p "debug=> "
echo Debug color set to %debug%
color %debug%
pause
goto admin

:dfc
cls
color %debug%
echo Set Default color
set /p "default=> "
echo Default color set to %default%
pause
goto admin

:wnc
cls
color %debug%
echo Set Warning color
set /p "warning=> "
echo Warning color set to %warning%
pause
goto admin

:9
cls
color %warning%
echo This is not a viable option!
ping localhost -n 5 >nul
goto admin

我测试了它,当我输入ex 5时,它仍然会进行调试。

3 个答案:

答案 0 :(得分:0)

IF /i %lol%==4 (goto start) else goto 9

虽然使用

是正常的做法
IF /i "%lol%"=="4" (goto start) else goto 9

提供一些保护,防止没有条目或包含空格的条目。

答案 1 :(得分:0)

您应该仔细查看IF语句的工作原理。

E.g。这一行IF /i %lol%==1 goto dbg if NOT goto 9完全没有意义。

您的代码应如下所示:

...
set /p "lol=> "
IF /i "%lol%"=="1" goto dbg
IF /i "%lol%"=="2" goto dfc
IF /i "%lol%"=="3" goto wnc
IF /i "%lol%"=="4" goto start
cls
color %warning%
echo This is not a viable option!
ping localhost -n 5 >nul
goto admin
...

答案 2 :(得分:0)

试试这段代码

IF /i %lol%==1 
(goto dbg) 
IF /i %lol%==2 
(goto dfc)
IF /i %lol%==3 
(goto wnc) 
IF /i %lol%==4 
(goto start)
else 
(goto 9)