全站搜索

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

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

    

2. 将某一文件内容或命令执行结果作为循环范围:

假如你有一个文件 todel.txt,里面是所有要删除的文件列表,现在你想将里面列出的每个文件都删掉。假设这个文件是每个文件名占一行,象这样: 

  c:\temp\a1.txt  c:\temp\a2.txt  c:\temp\subdir\b3.txt  c:\temp\subdir\b4.txt 

那么可以用FOR来完成:

  for /f %a in (todel.txt) do del %a 

这个命令还可以更强大。比如你的 todel.txt 并不是象上面例子那么干净,而是由DIR直接生成,有一些没用的信息,比如这样:

   Volume in drive D is DATA
   Volume Serial Number is C47C-9908

     Directory of D:\tmp

    09/26/2001  12:50 PM            18,426 alg0925.txt
    12/02/2001  04:29 AM               795 bsample.txt
    04/11/2002  04:18 AM             2,043 invitation.txt
                 4 File(s)         25,651 bytes
                 0 Dir(s)   4,060,700,672 bytes free 

for 仍然可以解出其中的文件名并进行操作:

  for /f "skip=5 tokens=5" %a in (todel.txt) do @if exist %a DEL %a 

当然,上面这个命令是在进行删除,如果你只是想看看哪些文件将被操作,把DEL换成echo:

  for /f "skip=5 tokens=5" %a in (todel.txt) do @if exist %a echo %a 

你将看到:

  alg0925.txt
  bsample.txt
  invitation.txt 

skip=5表示跳过前5行(就是DIR输出的头部信息),tokens=5表示将每行的第5列作为循环值放入%a,正好是文件名。在这里我加了一个文件存在判断,是因为最后一行的"free"刚好也是第5列,目前还想不出好的办法来滤掉最后两行,所以检查一下可保万无一失。

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

请发表评论或留言

用户名: 匿名发表

:硬件::软件: