choice 详解

转自百度贴吧--

【教程】choice命令简介及运用(有时间就顺带讲 for /l)

原文:http://tieba.baidu.com/p/2219162127



一、choice是神马?

choice 是批处理命令之一,是通过第三方软件 choice.exe 拓展的。 choice.exe Win 7 以上系统自带的命令行工具, XP 以下就要自行下载并移动到 %windir %\System32\  下。

二、choice到底是神马?!

choice,顾名思义,就是“选择”,实际上choice是让用户进行键入然后判断;通俗地讲就是不用回车的set /p。(当然有区别,choice只能输入单个字符,而多个字符输入,如输入昵称等,则必须要用set /p


、初探choice命令
我相信大部分人在看了帮助后都会懂了choice(那我TM还讲神马呢?!),不说神马,先上帮助。

====================================代码分割线====================================
C:\Windows\System32>choice /?
CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]
描述: 该工具允许用户从选择列表选择一个项目并返回所选项目的索引。
参数列表: 
/C choices 指定要创建的选项列表。默认列表是 "YN"。
/N 在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。
/CS 允许选择分大小写的选项。在默认情况下,这个工具是不分大小写的。
/T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0 到 9999。如果指定了 0,就不会有暂停,默认选项会得到选择。
/D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选项指定的一组选择中; 同时,必须用 /T 指定 nnnn。
/M text 指定提示之前要显示的消息。如果没有指定,工具只
显示提示。
/? 显示此帮助消息。
注意:
ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择,该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的 ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0 的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降序排列。
示例: 
CHOICE /? 
CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。" 
CHOICE /T 10 /C ync /CS /D y 
CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。" 
CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。"
====================================代码分割线==================================== 

好吧,帮助够详细了,choice的参数有:
/c /n /cs /t /d /m (/?)
choice常用搭配:
choice /c 123... /n (>nul)
choice /c 123... /n /t (n) /d 1 (>nul)
choice /c
下一章节继续介绍以上用法。


四、choice详解·上

首先来讲他的最简模式:
choice /c yn
他的结果是:
[Y,N]?
即让你选择"Y"或"N"。
当然,也可以是数字:
choice /c 123
他的结果是:
[1,2,3]? 

注意:choice只支持数字与字母的选择,不能是特殊符号,当然,还有更为强大的CKey(支持任意键盘字符的选择 By Defanive

如果加上 /n 参数,那么屏幕上的提示就会被屏蔽了.在实际运用中,为了保持界面美观,通常都加上 /n 参数。如:
choice /c 123 /n

如果按了其他的键(不在 /c 的列表中),那会怎样?
XP下,会什么事也没发生,你必须重新选择。
Win7下,会有“哔”的警告音,你也要再选择。


加上>nul会怎样?
choice /c 12 /n:当你选择时,你输入的字符会显示在屏幕上,影响美观!
choice /c 12 /n >nul可以屏蔽你输入的字符,不在屏幕上显示。
目前,Killer所有的choice命令都加了>nul


五、返回值判断

那么,当我们熟悉了选择机制后,如何判断使用者输入了哪个选项?

如果是set /p
set /p a=
if %a%==1 ………………
if %a%==2 ………………
if %a%==3 ………………

choice的返回值是环境变量errorlevel的值,你选择的是第几项,errorlevel的值就是什么。
例如:choice /c abc /n
当你选择a时,a是第1个选项,所以errorlevel的值为1
当你选择b时,b是第2个选项,所以errorlevel的值为2
当你选择c时,c是第3个选项,所以errorlevel的值为3

那么,语句应该这样写:
choice /c abc /n
if %errorlevel%==1 ………………
if %errorlevel%==2 ………………
if %errorlevel%==3 ………………

这应该是很简单的,相信初学者很快能掌握



六、choice详解·下

让我们进入最激动人心的时刻——延时选择
现在我们就要用到/t/d这两个参数
基本模式:choice /c 123 /n /t n /d 1
这句话的意思是:让使用者选择1、2、3中的一个,若其n秒后再不选择,则自动选择1



choice /t和/d还有延时功能,众所周知,用ping可以延时
ping /n 2 127.1 >nul
而choice也可以
choice /c k /n /t 2 /d k
choice还有一个好处:当你想快速跳过时,不停按k即可


七、其它参数

/m是echo加choice,相当于set /p a=〔message〕一样。
/cs是区分大小写,通常是不区分的。

choice的优缺点将在下一章介绍


-----------然后楼主就不写了---------------

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
win2003 Vista才有这个命令,可以放到xp中使用 ============================================================ Choice 在批处理程序中,通过显示提示信息并暂停批处理程序,用户可以从一组用户选项键中进行选择。 语法 choice [/c [Choices]] [/n] [/cs] [/tTimeout/dChoice] [/mText] 参数: /c Choices 指定用户选项键。显示时,选项键由逗号分隔,出现在括号([])中,后面跟着问号。如果未指定 /cChoices,默认情况下,choice 显示使用 [Y, N]。 /n 隐藏用户选项键。如果使用此命令行选项,将在提示符之前出现消息正文,选项仍处于启用状态。 /cs 指定用户选项键必须区分大小写。默认情况下,用户选项键不区分大小写。 /t Timeout /d Choice 指定在默认为指定键之前 choice 暂停指定的秒数。下表将描述 /t 命令行选项的值。 Timeout 要暂停的秒数。可接受的值介于 0 到 9999 之间。如果使用 0,choice 在默认为指定键之前不暂停。 /d Choice 指定 Timeout 秒数之后的默认选择。您使用的字符必须在由 /cChoices 指定的选择集中。如果使用此命令行选项,还必须同时指定 /tTimeout。 /m Text 指定要在提示符之前显示的文字。如果您包括命令行选项字符(即 /)作为提示符之前的一部分文字,必须用引号将该文字引起来。如果未指定任何文字,choice 将只显示提示符。 /? 在命令提示符下显示帮助。 注释 • ERRORVALUE 环境变量被设置为用户从选择列表中选择的键的索引。您指派的第一个键将返回值 1,第二个将返回值 2,第三个将返回值 3,依此类推。如果用户按下一个不在您指派的键中间的键,Choice.exe 将发出警告声(即,它向控制台发送一个 BEL 或 07h 字符)。如果 Choice.exe 检测到错误情况,它就会返回错误值 255。如果用户按 Ctrl+Break 或 Ctrl+C,Choice.exe 就会返回错误值 0。当您在批处理程序中使用错误值参数时,请将它们以降序列出。 示例 请在批处理文件中键入下列语法: choice /c ync 运行 Choice.exe 时出现下列语句: [Y,N,C]?请在批处理文件中键入下列语法: choice /c ync /n /m Yes, No or Continue? 运行 Choice.exe 时出现下列语句: Yes, No, or Continue?按如下方式将文字添加到语法中: choice /c ync /m Yes, No, or Continue 运行 Choice.exe 时出现下列语句: Yes, No, or Continue [Y,N,C]?/t 命令行选项将设置一个时间限制(在该限制内用户必须响应),并指定当用户在该时间限制内没有作出响应时将显示的值。要将时间限制设置为五秒并指定 N 作为默认值,请在批处理程序中键入下列命令行: choice /c ync /t 5 /d n 当批处理文件启动 Choice.exe 时,将出现下列消息: [Y,N,C]?如果用户未能在五秒钟内按下一个键,Choice.exe 将选择 N 并返回错误值 2。否则,Choice 将返回与用户所选对应的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值