好的,我想在批处理文件中询问用户以下问题,但不要以为我输入的是正确的选择命令。
echo Would you like to know the time? (Y/N)
CHOICE /C YN /N
GOTO OPTION-%ERRORLEVEL%
:OPTION-Y Yes
echo %time%
goto cont
:OPTION-N No
:cont
P.S今天是我的第一天,所以我是新手,请不要判断。
答案 0 :(得分:2)
因为%errorlevel%
不是Y
或N
您的标签应为:OPTION-1
和:OPTION-2
:
@echo off
echo Would you like to know the time? (Y/N)
CHOICE /C YN /N
GOTO OPTION-%ERRORLEVEL%
:OPTION-1
echo %time%
goto cont
:OPTION-2
:cont
以下是另一个示例,以便您了解如何将%errorlevel%
号码分配给您选择的密钥。
@echo off
:start
cls
CHOICE /C YNM /N /M "Should I display the Time? Select (Yes (Y) No (N) or Maybe (M))"
if %errorlevel%==1 echo %time%
if %errorlevel%==2 echo Ok, I won't then
if %errorlevel%==3 echo it is fine, I will ask again in 10 seconds & timeout /T 10 & goto :start
在这里,您可以看到第一个键分配给%errorlevel% 1
,第二个键分配给%errorlevel% 2
,第三个键分配给%errorlevel% 3
等。
答案 1 :(得分:0)
CHOICE
未将选定的密钥作为%ERRORLEVEL%
返回,它会返回所选密钥的索引 - 即,对于CHOICE /C YN
,如果您选择 Y ,%ERRORLEVEL%
将为1;对于 N ,它将是2.请参阅SS64 on CHOICE
。
您还必须小心测试%ERRORLEVEL%
的顺序;标准构造IF ERRORLEVEL n ...
实际上正在测试%ERRORLEVEL%
是否等于或大于 n。请参阅SS64 on ERRORLEVEL
。
答案 2 :(得分:0)
您还可以将所有提供的代码段减少为两行,(根据需要在其下方继续运行脚本):
Choice /M "Would you like to know the time"
If Not ErrorLevel 2 Echo %TIME% & Timeout 3 >Nul