Создание пакетного сценария в 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, она даст эхо и вернется в главное меню, как и должно... ТОГДА, если вы просто нажмете ввод без вставленного значения, она будет echo и вернитесь в главное меню, как следует.
Мой вопрос: как заставить его распознать, что пользователь не ввел значение для set /p с первого раза?