这是一个我无法找到答案的简单问题。我正在运行需要用户输入/选择的脚本。这是一个有问题的领域:
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时才能工作。我最好的选择是什么?
非常感谢。
答案 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
语句。