Выбор продолжает идти к первому - PullRequest
0 голосов
/ 19 февраля 2020
ECHO OFF
CLS
:MENU
ECHO.
ECHO ...............................................
ECHO PRESS 1 or 2 to select your task, or 4 to EXIT.
ECHO ...............................................
ECHO.
ECHO 1 - Test
ECHO 2 - Production
ECHO 4 - EXIT
ECHO.
CHOICE /C:124
IF ERRORLEVEL 1 SET M=1
IF ERRORLEVEL 2 SET M=2
IF ERRORLEVEL 4 SET M=4

IF %M%==1 GOTO TEST
IF %M%==2 GOTO PROD
IF %M%==4 GOTO EOF
:TEST
ECHO TEST
cd %~dp0\Test\
start Test.exe
GOTO MENU
:PROD
ECHO PROD
cd %~dp0\Production\
start Production.exe
GOTO MENU

независимо от того, какая опция выбрана, она всегда запускает Test.exe

Что я делаю не так?

1 Ответ

2 голосов
/ 19 февраля 2020

Это похоже на работу:

ECHO OFF
CLS
:MENU
ECHO.
ECHO ...............................................
ECHO PRESS 1 or 2 to select your task, or 4 to EXIT.
ECHO ...............................................
ECHO.
ECHO 1 - Test
ECHO 2 - Production
ECHO 4 - EXIT
ECHO.
CHOICE /C:124
IF %ERRORLEVEL% EQU 1 SET M=1
IF %ERRORLEVEL% EQU 2 SET M=2
IF %ERRORLEVEL% EQU 3 SET M=4

IF %M% EQU 1 GOTO TEST
IF %M% EQU 2 GOTO PROD 
IF %M% EQU 4 GOTO EOF

:TEST
ECHO TEST
cd %~dp0\Test\
ECHO start Test.exe
GOTO MENU
:PROD
ECHO PROD
cd %~dp0\Production\
start Production.exe
GOTO MENU

:EOF

Требуется пара незначительных изменений в вашем скрипте

  • ссылаются на переменную %ERRORLEVEL% вместо использования IF ERRORLEVEL
  • CHOICE возвращает индекс выбранной опции, а не выбранное значение - 4 является третьей опцией и имеет индекс 3.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...