全站搜索

史上最强之dos命令 - "FOR" - 高级应用范例

2004-05-25   作者:bluebear   阅读量:

    

3. 可以用 /f 参数将某一命令执行结果作为循环范围

非常有用的功能。比如,我们想知道目前的环境变量有哪些名字(我们只要名字,不要值)。可是SET命令的输出是“名字=值”的格式,现在可以用FOR来只取得名字部分:

  FOR /F "delims==" %i IN ('set') DO @echo %i 

将看到:

  ALLUSERSPROFILE
  APPDATA
  CLASSPATH
  CommonProgramFiles
  COMPUTERNAME
  ComSpec
  dircmd
  HOMEDRIVE  ...... 

这里是将set命令执行的结果拿来作为循环范围。delims==表示用=作为分隔符,由于FOR /F默认是用每行第一个TOKEN,所以可以分离出变量名。如果是想仅列出值:

  FOR /F "delims== tokens=2" %i IN ('set') DO @echo %i 

tokens=2和前例相同,表示将第二列(由=作为分隔符)作为循环值。

再来个更有用的例子:

我们知道 date /t (/t表示不要询问用户输入)的输出是象这样的:

  Sat 07/13/2002 

现在我想分离出日期部分,也就是13:

  for /f "tokens=3 delims=/ " %a in ('date /t') do @echo %a 

实际上把 tokens后面换成1,2,3或4,你将分别得到Sat, 07, 13和2002。注意delims=/后面还有个空格,表示/和空格都是分隔符。由于这个空格delims必须是/f选项的最后一项。

再灵活一点,象本文开头提到的,将日期用2002-07-13的格式输出:

  for /f "tokens=2,3,4 delims=/ " %a in ('date /t') do @echo %c-%a-%b 

当tokens后跟多个值时,将分别映射到%a, %b, %c等。实际上跟你指定的变量有关,如果你指定的是 %i, 它们就会用%i, %j, %k等。

灵活应用这一点,几乎没有做不了的事。

责任编辑:平生一笑
文章来源:ror   2004-05-25

请发表评论或留言

用户名: 匿名发表

:硬件::软件: