/ / Co jest nie tak z instrukcją IF NOT? - plik wsadowy

Co jest nie tak z tym stwierdzeniem IF NOT? - plik wsadowy

Ten kod ma to uczynić tak, że jeśli janaciśnij 1–4, aby przejść do opcji 1–4 i jeśli naciśniesz coś innego, powiedziałbym, że nie jest to opcja. Ale jeśli wpiszesz coś innego, to i tak idzie do debugowania.

Sprawdziłem kod kilka razy i nie mogę znaleźć błędu. Porównałem go nawet z takim kodem, który rzeczywiście działał, a ja nawet Ctrl-c Ctrl-v go edytował i nadal nie działa.

: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

Testuję to, a kiedy wpisuję ex 5, nadal przechodzi do debugowania.

Odpowiedzi:

0 dla odpowiedzi № 1

Powinieneś przyjrzeć się bliżej, jak to zrobić IF oświadczenia działają.

Na przykład. ta linia IF /i %lol%==1 goto dbg if NOT goto 9 absolutnie nie ma sensu.

Twój kod powinien wyglądać mniej więcej tak:

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

0 dla odpowiedzi nr 2
IF /i %lol%==4 (goto start) else goto 9

Mimo że jest to normalna praktyka

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

który zapewnia pewną ochronę przed brakiem wpisu lub wpisu zawierającego spacje.


0 dla odpowiedzi № 3

spróbuj tego kodu

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)