我正在开发一个脚本,其中我需要用户从列表中进行选择,该列表为他们提供他们想要使用的工具,并且根据此输入将他们带到代码的其他部分。然而,由于我对批处理语言不太了解,所以我询问了 ChatGPT 以及我在该网站上看到的类似项目,我尝试这样做。一般来说,问题是当用户键入数字并按 Enter 时,程序立即关闭。这是我的代码:
echo 1. Temporary Cleaning.
echo 2. Installation of Applications.
echo 3. Application Update.
echo 4. Exit
echo.
echo.
:digitnumber
set /p ntool= Enter the number of the tool you need:
set "vnumber=false"
set "nvalid= 1 2 3 4 "
for %%A in (%invalid%) do ( if "%ntool%"=="%%A" (
set "vnumber=true"
goto validnumber
)
)
:validnumber
if "%vnumber%"=="true" (
if "%ntool%"=="1" (
echo You have selected option 1.
) else if "%ntool%"=="2" (
echo You have selected option 2.
) else if "%ntool%"=="3" (
echo You have selected option 3.
) else if "%ntool%"=="4" (
echo You have selected option 4.
)
) else (
echo Invalid selection. Please select a valid option (1-4).
goto enter number
)
pause
` 如果您能帮助我,我将非常感激。
我逐段运行代码,显然问题出在检查变量是否是有效数字之后。但我不知道该怎么办
您的代码有一些问题
我。您正在设置变量
nvalid
但在 for 循环中您正在使用 invalid
echo 1. Temporary Cleaning.
echo 2. Installation of Applications.
echo 3. Application Update.
echo 4. Exit
echo.
echo.
:digitnumber
set /p ntool= Enter the number of the tool you need:
set "vnumber=false"
set "nvalid= 1 2 3 4 "
for %%A in (%nvalid%) do ( if "%ntool%"=="%%A" (
set "vnumber=true"
goto validnumber
)
)
:validnumber
if "%vnumber%"=="true" (
if "%ntool%"=="1" (
echo You have selected option 1.
goto :endif
)
if "%ntool%"=="2" (
echo You have selected option 2.
goto :endif
)
if "%ntool%"=="3" (
echo You have selected option 3.
goto :endif
)
if "%ntool%"=="4" (
echo You have selected option 4.
goto :endif
)
) else (
echo Invalid selection. Please select a valid option [1-4].
goto :digitnumber
)
:endif
echo --END--
pause