1 学到初步入门,可以看帮助了,先请输入 choice /? +报错信息
帮助不是给新手看的,但初步入门后应该看这个加强
帮助内容很强大
2 测试 choice例子
2.1 choice
- 该工具允许用户从选择列表选择一个项目并返回所选项目的索引。
- choice 默认有选项,默认是 choice /c yn
- choice 是有默认提示的,可以认为等效于 choice /m "[Y,N]"
2.2 choices----------choice /c
- 使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……
- 可以改变选项,并且都是单字母 ,或单个数字,且不允许重复
- choice /c ync
- choice /c abc
- choiece /c 123
2.3 choice /n
- 隐藏choice 的提示内容,一般是配合前面的语句使用,如 echo xxx & choice /n
- 我试验了下,和 choice >nul 类似
- 差别在于choice >nul 连手打输入 都隐藏了 ,那个不是句柄0吗?
2.3 message --------choice /m
- choice /m xxx 信息如果有空格,别忘记 ""等
- choice /c /m 注意 /m 是配合/c使用的 说明文本而已,要一致
2.4 倒计时默认选择 -------choice /t 10 /d y
- choice /t /d 必须一起使用,不能单个使用
- choice /t 10 单位是秒
- choice /y 是默认选择,需要是 /c里的其中一个有效选项
- /T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0到 9999。
- 如果指定了 0,就不会有暂停,默认选项会得到选择。
- /D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选项指定的一组选择中; 同时,必须用 /T 指定 nnnn。
2.5 区分大小写 --------choice /cs
- 如果大小写不对,会蜂鸣器报警,无法输入
- 在默认情况下,是不分大小写的。
3 网上的经典例子 choice 配合 if errorlevel
- if errorlevel 的 goto end 和 :end 要优于 if errorlevel xx exit
- 单独写一个:end 用于各个返回都跳转到最后面,而不是直接关掉 cmd
注意:
ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择,该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降
序排列。
此批处理运行后,将显示“defrag,mem,end[D,M,E]?” ,用户可选择d m e ,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。
例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列):
@echo off
choice /C dme /M "defrag,mem,end"
if errorlevel 3 goto end
if errorlevel 2 goto mem
if errotlevel 1 goto defrag
:defrag
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye