考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
  当前位置:操作系统 > DOS > 文章内容
  

DOS批处理高级教程:DOS循环for命令详解

 [ 2017年8月25日 ] 【

  保存执行看效果,他会打印从1 2 3 4 5 这样5个数字(1,1,5)这个参数也就是表示从1开始每次加1直到5终止!

  等会晕,就打印个数字有P用...好的满足大家,看这个例子

  ?

1
2
3
@echo off
for /l %%i in (1,1,5) do start cmd
pause

  执行后是不是吓了一跳,怎么多了5个CMD窗口,呵呵!如果把那个 (1,1,5)改成 (1,1,65535)会有什么结果,我先告诉大家,会打开65535个CMD窗口....这么多你不死机算你强!

  当然我们也可以把那个start cmd改成md %%i 这样就会建立指定个目录了!!!名字为1-65535

  看完这个被我赋予破坏性质的参数后,我们来看最后一个参数

  五、参数 /F

  \迭代及文件解析

  使用文件解析来处理命令输出、字符串及文件内容。使用迭代变量定义要检查的内容或字符串,并使用各种options选项进一步修改解析方式。使用options令牌选项指定哪些令牌应该作为迭代变量传递。请注意:在没有使用令牌选项时,/F 将只检查第一个令牌。

  文件解析过程包括读取输出、字符串或文件内容,将其分成独立的文本行以及再将每行解析成零个或更多个令牌。然后通过设置为令牌的迭代变量值,调用 for 循环。默认情况下,/F 传递每个文件每一行的第一个空白分隔符号。跳过空行。

  详细的帮助格式为:

  FOR /F ["options"] %%variable IN (file-set) DO command [command-parameters]

  FOR /F ["options"] %%variable IN ("string") DO command [command-parameters]

  FOR /F ["options"] %%variable IN ('command') DO command [command-parameters]

  带引号的字符串"options"包括一个或多个指定不同解析选项的关键字。这些关键字为:

  eol=c - 指一个行注释字符的结尾(就一个)

  skip=n - 指在文件开始时忽略的行数。

  delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。

  tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。经测试,该参数最多只能区分31个字段。

  usebackq - 使用后引号(键盘上数字1左面的那个键`)。

  未使用参数usebackq时:file-set表示文件,但不能含有空格

  双引号表示字符串,即"string"

  单引号表示执行命令,即'command'

  使用参数usebackq时:file-set和"file-set"都表示文件

  当文件路径或名称中有空格时,就可以用双引号括起来

  单引号表示字符串,即'string'

  后引号表示命令执行,即`command`

  以上是用for /?命令获得的帮助信息,直接复制过来的。

  晕惨了!我这就举个例子帮助大家来理解这些参数!

  For命令例1:****************************************

  ?

1
2
3
4
5
6
7
8
9
@echo off
rem 首先建立临时文件test.txt
echo ;注释行,这是临时文件,用完删除 >test.txt
echo 11段 12段 13段 14段 15段 16段 >>test.txt
echo 21段,22段,23段,24段,25段,26段 >>test.txt
echo 31段-32段-33段-34段-35段-36段 >>test.txt
FOR /F "eol=; tokens=1,3* delims=,- " %%i in (test.txt) do echo %%i %%j %%k
Pause
Del test.txt

  运行显示结果:

  11段 13段 14段 15段 16段

  21段 23段 24段,25段,26段

  31段 33段 34段-35段-36段

  请按任意键继续. . .

  为什么会这样?我来解释:

  eol=; 分号开头的行为注释行

  tokens=1,3* 将每行第1段,第3段和剩余字段分别赋予变量%%i,%%j,%%k

  delims=,- (减号后有一空格)以逗号减号和空格为分隔符,空格必须放在最后

  For命令例2:****************************************

  ?

1
2
3
@echo off
FOR /F "eol= delims=" %%i in (test.txt) do echo %%i
Pause

  运行将显示test.txt全部内容,包括注释行,不解释了哈。

  For命令例3:****************************************

  另外/F参数还可以以输出命令的结果看这个例子

  ?

1
2
3
@echo off
FOR /F "delims=" %%i in ('net user') do @echo %%i
pause

  这样你本机全部帐号名字就出来了把扩号内的内容用两个单引号引起来就表示那个当命令执行,FOR会返回命令的每行结果,加那个"delims=" 是为了让我空格的行能整行显示出来,不加就只显示空格左边一列!

  基本上讲完了FOR的基本用法了...如果你看过FOR的系统帮助,你会发现他下面还有一些特定义的变量,这些我先不讲.大家因该都累了吧!你不累我累啊....

首页 1 2 尾页
本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2007-2013 中华考试网(Examw.com) All Rights Reserved