Ваша проблема заключается в следующем:
if "%INPUT%"=="2" (
echo Choice 2 selected
set /p INPUT_1=Please enter input 1: %=%
echo input_1 is %INPUT_1%
goto QUITNOW
)
Этот весь блок оценивается (для переменных среды) до того, как любой его будет запущен.Это означает, что %INPUT_1%
оценивается перед установкой.
Что вам нужно сделать, это поместить:
setlocal enableextensions enabledelayedexpansion
вверху вашего скрипта (и endlocal
перед выходом) и использоватьсимволы отложенного расширения, таким образом:
if "%INPUT%"=="2" (
echo Choice 2 selected
set /p INPUT_1=Please enter input 1: %=%
echo input_1 is !INPUT_1!
goto QUITNOW
)
Это можно увидеть в действии с помощью следующего сценария:
@setlocal enableextensions enabledelayedexpansion
@echo off
set xx=1
if %xx%==1 (
set xx=2
echo %xx%
echo !xx!
)
endlocal
, который выводит:
1
2
, поскольку %xx%
вычисляется в то время, когда читается весь оператор if
, а !xx!
вычисляется при выполнении этой строки .