批处理二(摘自网友文集)

choice命令
choice
使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同。

choice的命令语法(该语法为Windows 2003choice命令的语法,其它版本的choice的命令语法与此大同小异):

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

描述:
该工具允许用户从选择列表选择一个项目并返回所选项目的索引。

参数列表:
/C    choices  
指定要创建的选项列表。默认列表是 "YN"

/N   在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。

/CS   允许选择分大小写的选项。在默认情况下,这个工具是不分大小写的。

/T  timeout做出默认选择之前,暂停的秒数。可接受的值是从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 YNC /M "确认请按 Y,否请按 N,或者取消请按 C
"
屏幕上会显示:

确认请按 Y,否请按 N,或者取消请按 C [Y,N,C]?
例: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

此批处理运行后,将显示“defrag,mem,end[D,M,E]?” ,用户可选择d m e ,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束


goto
命令

goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。

:

goto end

:end
echo this is the end

标号用“:字符串来定义,标号所在行不被执行。


for
命令
for
命令其实就是一个循环命令,如果我们想重复一个语句,就可以用for命令.通过for命令,可以控制循环的次数等.
语法
:
FOR %variable IN (set) DO command [command-parameters]
%variable 
指定一个单一字母可替换的参数。 (set)指定一个或一组文件。可以使用通配符。command 指定对每个文件执行的命令。  command-parameters为特定命令指定参数或命令行开关。

在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.

不知道你你看懂了没有,其实还是很容易理解的,还是举个例子吧.我想用type打印所有c盘根目录下的bat文件和txt文件.dos底下命令就是 type *.bat *.txt.先将该文件保存在c盘根目录下,名称为a.bat
for命令如下:

for %%t in (*.bat *.txt) do type %%t
%%t
其实就是代表的一个参数,他的内容在in() 里面括号里的内容.也就是说这句话里的%%t就变成了*.bat *.txt.do就是做的意思,执行type命令,type后面是%%t,%%t又是*.bat *.txt.所以原来这句命令的意思就变成了:
type *.bat *.txt
执行时进cmd,然后到c盘根目录下输入a.bat就可以打印出c盘根目录下所有扩展名为.bat.txt的文件内容了
.
这里要注意:in后面有个空格.

xp底下,for命令扩展名被起用因此for的功能变得更加强大.下面讲一个真正的循环.
FOR /L %variable IN (start,step,end) DO command [command-parameters]

该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5) 将产生序列 1 2 3 4 5(5,-1,1) 将产生序列 (5 4 3 2 1)。里面第一个1start的位置,意思是起始位置,21step位置,英文意思是跨步,在这里面的意思是每次增量为1.后面的5end的位置,意思是结束时的大小。这句话的意思就是从1(start)开始增加,每次增加1(step),一直到变到5(end)为止。这个有什么用呢?其实我感觉这个东西的用处还是很大的.举个最简单的例子,我们想重复回显"i am the best"这句话,重复显示10.那么for命令如下:
for /L %%e in (1,1,10) do echo "i am the best"
这时,cmd就会重复输入"i am the best"10.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值