Создание пакетного скрипта в Windows XP.Вот фрагмент кода, с которым у меня возникли проблемы:
::==============================================================::
::How many scripts are included in this program?
SET NumOfScripts=4
::==============================================================::
:mainmenu
CLS
ECHO [MAIN MENU]
ECHO Please choose from the following options to run a particular script:
set /p choice="[1] SCRIPT1.bat | [2] SCRIPT2.bat | [3] SCRIPT3.bat | [4] SCRIPT4.bat : "
IF %choice% EQU 1 CALL :SCRIPT1
IF %choice% EQU 2 CALL :SCRIPT2
IF %choice% EQU 3 CALL :SCRIPT3
IF %choice% EQU 4 CALL :SCRIPT4
REM Wrong Choices
IF %choice% GTR %NumOfScripts% (
(ECHO You have entered an invalid option. Please press any key to be taken back to the main menu.) & PAUSE & GOTO:mainmenu
)
IF %choice% LEQ 0 (
(ECHO You have entered an invalid option. Please press any key to be taken back to the main menu.) & PAUSE & GOTO:mainmenu
)
ECHO You have entered an invalid option. Please press any key to be taken back to the main menu
PAUSE & GOTO:mainmenu
Глядя в REM Wrong Choice
, первые два аргумента работают, как и должно, однако, если пользователь вводит без значения (просто нажимает вводключ) он автоматически завершает сценарий.Я добавил IF NOT DEFINED choice
, и это не работает ... Я также попробовал IF [%choice%]==[]
и IF [%choice%] EQU []
, и они тоже не работают.
Вот забавная вещь ... вы вводитенедопустимая цифра, скажем, 5 или -1, она выдаст эхо и вернется в главное меню, как и должно ... ТОГДА, если вы просто нажмете ввод без введенного значения, он будет эхом и вернется в главное менюдолжен.
Мой вопрос: как вы можете распознать, что пользователь не вводил значение для set / p с первого раза?