批量选择命令不起作用

时间:2018-01-31 12:23:03

标签: batch-file cmd

好的,我想在批处理文件中询问用户以下问题,但不要以为我输入的是正确的选择命令。

    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今天是我的第一天,所以我是新手,请不要判断。

3 个答案:

答案 0 :(得分:2)

因为%errorlevel%不是YN

您的标签应为: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