2017-03-02 62 views
-1

這段代碼應該是這樣的,如果我按1 - 4它會去的選項1 - 4,如果我按其他東西它會說它不是一個選項。但如果我輸入其他東西,它仍然會進行調試。這個IF NOT語句有什麼問題?

而且我檢查了幾次代碼,我找不到錯誤。我甚至將它與這樣的代碼進行了比較,這些代碼實際上工作正常,我甚至按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它仍然去調試。

+0

你的第一個'if'會,修正時,去'dbg'或'9'。它不會執行任何其他比較,因爲執行將轉移到'dbg'或'9'。 – Magoo

+0

請通過在命令提示符窗口中輸入「if /?」來閱讀'if'命令的幫助;你會發現你需要在這裏的'else'子句... – aschipfl

回答

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 
... 
+1

語法是'IF [/ I] [NOT] item1 == item2 command'。所以雖然'IF/i%lol%== 1 goto dbg'沒問題,但第二部分'if not goto 9'沒有任何意義。我假設'如果不'應該是'else'。 'IF NOT'後面必須跟着'IF NOT'%lol%== 5 GOTO XYZ「'這樣的條件。 「IF NOT」是從其他語言(如C#,Java等)中已知的'!='運算符的批處理變體。 – MichaelS

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

雖然這是正常的做法是使用

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

提供對沒有進入或包含空格的條目一些保護。

+0

謝謝。這也解決了另一個問題:D – SpoodytheOne

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) 
+1

這不起作用。 – Squashman