天下网吧 >> 网吧天地 >> 网吧技术 >> 网吧软件 >> 正文

关于高手过虑DOS for无从下手

2006-6-13admin999佚名

在中华网络安全联盟 看到一遍 "最强之dos命令 - for"

http://www.xren.net/os/10923.html 

其中部份内容如下 这里有一行话题 "目前还想不出好的办法来滤掉最后两行" 引起了我的兴趣

可是无法给它的留言,就来天下网吧谈谈了

 

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

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


    c: empa1.txt
    c: empa2.txt
    c: empsubdir3.txt
    c: empsubdi4.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: mp

    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列,目前还想不出好的办法来滤掉最后两行,所以检查一下可保万无一失。

本文来源:admin999 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。文章是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 Email:support@txwb.com,系统开号,技术支持,服务联系微信:_WX_1_本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行