2017-03-02 6 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 

私はそれをテストし、私がex5を入力すると、それでもデバッグに行きます。

+0

を修正したときにあなたの最初の 'if'は、' dbg'または '9'に行きます。実行は 'dbg'または' 9'のいずれかに転送されるため、他の比較は実行されません。 – Magoo

+0

コマンドプロンプトウィンドウに 'if /?'とタイプして 'if'コマンドのヘルプを読んでください。あなたはここに必要な 'else'節を見つけるでしょう... – aschipfl

答えて

0

IFステートメントの動作を詳しく見てください。

など。この行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コマンド'です。したがって、 'IF/i%lol%== 1 goto dbg'は問題ありませんが、2番目の部分は' goto 9でないなら '意味がありません。 'もし' not'が '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