dos命令行choice命令使用详解
Choice命令
使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……。这个命令在有些Windows版本(比如WindowsXP)上可能不可用。
语法:
CHOICE:[/C[:]按键表][/N][/S][/T[:]选择值,秒数][显示文本]
其中,/C表示可选则的按键,/N表示不要显示提示信息,/S表示大小写字符敏感方式,/T表示若在批定的时间内没有选择的话,自动执行/C中定义的某个选择值。显示文本是CHOICE命令执行时的提示信息。选择结果将用ERRORLEVEL值来表示。
示例:
@echooff choice/c:dmedefrag,mem,end iferrorlevel3gotodefrag REM应先判断数值最高的错误码 iferrorlevel2gotomem iferrorlevel1gotoend :defrag c:\dos\defrag gotoend :mem mem gotoend :end echogoodbye
此文件运行后,将显示defrag,mem,end[D,M,E]?用户可选择dme,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以gotoend将程序跳到end标号处,然后程序将显示goodbye,文件结束。
可替换的命令
对WindowsXP上不能使用CHOICE命令的情形,如果想使用相似的功能,可以使用SET命令,参见Set命令/P选项。
choice一般在cmd批处理中用来根据用户输入执行不同的操作,非常实用,例如
下面是两个软件根据用户选择来执行
@echooff 远程协助工具集 :start cls color0a MODEcon:COLS=60LINES=20 echo. echo=============================== echo请选择远程工具 echo=============================== echo. echo1.AnyDesk echo. echo2.TeamViewer echo. echo. :cho setchoice= set/pchoice=请输入工具编号: IFNOT"%Choice%"==""SETChoice=%Choice:~0,1% if/i"%choice%"=="1"gotoAnyDesk if/i"%choice%"=="2"gotoTeamViewer :AnyDesk AnyDesk.exe exit :TeamViewer TeamViewer.exe exit
下面来介绍一下choice的命令使用
CHOICE[/Cchoices][/N][/CS][/Ttimeout/Dchoice][/Mtext]
描述:
该工具允许用户从选择列表选择一个项目并返回所选项目的索引。
参数列表:
/Cchoices指定要创建的选项列表。默认列表是"YN"。
/N在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。
/CS允许选择分大小写的选项。在默认情况下,这个工具是不分大小写的。
/Ttimeout做出默认选择之前,暂停的秒数。可接受的值是从0到9999。如果指定了0,就不会有暂停,默认选项会得到选择。
/Dchoice在nnnn秒之后指定默认选项。字符必须在用/C选项指定的一组选择中;同时,必须用/T指定nnnn。
/Mtext指定提示之前要显示的消息。如果没有指定,工具只显示提示。
/?显示此帮助消息。
注意:
ERRORLEVEL环境变量被设置为从选择集选择的键索引。列出的第一个选择返回1,第二个选择返回2,等等。如果用户按的键不是有效的选择,该工具会发出警告响声。如果该工具检测到错误状态,它会返回255的ERRORLEVEL值。如果用户按Ctrl+Break或Ctrl+C键,该工具会返回0的ERRORLEVEL值。在一个批程序中使用ERRORLEVEL参数时,将参数降序排列。
示例:
CHOICE/?
CHOICE/CYNC/M"确认请按Y,否请按N,或者取消请按C。"
CHOICE/T10/Cync/CS/Dy
CHOICE/Cab/M"选项1请选择a,选项2请选择b。"
CHOICE/Cab/N/M"选项1请选择a,选项2请选择b。"
下面是来自国外网站的介绍
TheCHOICEcommandwasintroducedinMS-DOS6andisstillavailableinMS-DOS7(Windows95/98).
InWindowsNT4,2000andXP,CHOICEisnolongerapartofthestandarddistribution.Itis,however,availableaspartoftheWindowsNT4ResouceKit.
Ontheotherhand,ifyoustillhavethatoldunusedMS-DOS6orWindows95/98versionlyingaround,youcanusetheCHOICE.COMfromthatversioninstead.(*)
JustcopyittoadirectorythatisinyourPATH.
Note:16-bitDOSversionswillnotworkin64-bitWindowsversions.
CHOICEisavailableagaininWindowsVistaandlaterversions.
大部分意思就是这个命令会在以后的系统中一直存在,但注意16位的系统无法在64位系统自带了,而我们安装的64位系统已经集成了64的choice命令,大家可以放心使用。
注释
ERRORVALUE环境变量被设置为用户从选择列表中选择的键的索引。您指派的第一个键将返回值1,第二个将返回值2,第三个将返回值3,依此类推。如果用户按下一个不在您指派的键中间的键,Choice.exe将发出警告声(即,它向控制台发送一个BEL或07h字符)。如果Choice.exe检测到错误情况,它就会返回错误值255。如果用户按Ctrl+Break或Ctrl+C,Choice.exe就会返回错误值0。当您在批处理程序中使用错误值参数时,请将它们以降序列出。
示例
请在批处理文件中键入下列语法:
choice/cync
运行Choice.exe时出现下列语句:
[Y,N,C]?
请在批处理文件中键入下列语法:
choice/cync/n/mYes,NoorContinue?
运行Choice.exe时出现下列语句:
Yes,No,orContinue?
按如下方式将文字添加到语法中:
choice/cync/mYes,No,orContinue
运行Choice.exe时出现下列语句:
Yes,No,orContinue[Y,N,C]?
/t命令行选项将设置一个时间限制(在该限制内用户必须响应),并指定当用户在该时间限制内没有作出响应时将显示的值。要将时间限制设置为五秒并指定N作为默认值,请在批处理程序中键入下列命令行:
choice/cync/t5/dn
当批处理文件启动Choice.exe时,将出现下列消息:
[Y,N,C]?
如果用户未能在五秒钟内按下一个键,Choice.exe将选择N并返回错误值2。否则,Choice将返回与用户所选对应的值。