蝙蝠用户选择

时间:2017-01-03 15:48:04

标签: batch-file environment-variables

这是一个我无法找到答案的简单问题。我正在运行需要用户输入/选择的脚本。这是一个有问题的领域:

echo   W -- WATCH_SCALE
echo   E -- EARRING_SCALE
echo   R -- RING_SCALE
echo   B -- BOX

set /P rnFunc="choose a script: "
for %%I in (W E R B x) do if #%rnFunc%==#%%I goto assign%%I

如果用户输入了正确的字母,脚本就会起作用,但是如果用户输入了一个未定义的字母,例如“T”,则脚本会继续执行第一个选项而不是中断。我希望这只有在用户输入W,E,R或B时才能工作。我最好的选择是什么?

非常感谢。

2 个答案:

答案 0 :(得分:4)

您可能需要查看CHOICE命令。

CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

Description:
    This tool allows users to select one item from a list
    of choices and returns the index of the selected choice.

Parameter List:    /C    choices       Specifies the list of choices to be created.
                       Default list is "YN".

   /N                  Hides the list of choices in the prompt.
                       The message before the prompt is displayed
                       and the choices are still enabled.

   /CS                 Enables case-sensitive choices to be selected.
                       By default, the utility is case-insensitive.

   /T    timeout       The number of seconds to pause before a default
                       choice is made. Acceptable values are from 0 to
                       9999. If 0 is specified, there will be no pause
                       and the default choice is selected.

   /D    choice        Specifies the default choice after nnnn seconds.
                       Character must be in the set of choices specified
                       by /C option and must also specify nnnn with /T.

   /M    text          Specifies the message to be displayed before
                       the prompt. If not specified, the utility
                       displays only a prompt.

   /?                  Displays this help message.

   NOTE:    The ERRORLEVEL environment variable is set to the index of the
   key that was selected from the set of choices. The first choice listed 
   returns a value of 1, the second a value of 2, and so on.    If the user 
   presses a key that is not a valid choice, the tool    sounds a warning 
   beep. If tool detects an error condition,    it returns an ERRORLEVEL
   value of 255. If the user presses    CTRL+BREAK or CTRL+C, the tool
   returns an ERRORLEVEL value    of 0. When you use ERRORLEVEL parameters 
   in a batch program, list    them in decreasing order.

Examples:    
CHOICE /?    
CHOICE /C YNC /M "Press Y for Yes, N for No or C for Cancel."    
CHOICE /T 10 /C ync /CS /D y    
CHOICE /C ab /M "Select a for option 1 and b for option 2."    
CHOICE /C ab /N /M "Select a for option 1 and b for option 2."

答案 1 :(得分:2)

goto end语句后立即添加for。然后在所有其他标签解决您的问题之后制作一个名为end的标签。基本上,第一个遇到的标签正在执行,因为它失败了for语句。