首页|毒酷文章|软件下载
   位置: 毒酷-dokoo >> 毒酷文章 >> 小技巧 >> 正文
欢迎您 Admin
您的身份:管理员
可用金钱:5667
转到用户后台
上传文章】【上传软件
消费记录】【我的收藏
修改资料】【短消息 0
后台管理】【注销登陆
最新调查
  • 没有任何调查
  • 频道统计
    小块头有大智慧 For命令在Windows中的妙用[毒酷-dokoo]
    小块头有大智慧 For命令在Windows中的妙用[毒酷-dokoo]
     更新时间:2008-3-12 21:32:18  点击数:4
    【字体: 字体颜色
     

      在Windows中,我们经常要批量地来完成相同的工作,很多用户往往是上网搜索第三方软件来完成。其实在Windows中,巧妙地利用For命令就可以很轻松地完成很多批量工作。为了更好地理解我们的下一步实战,先让我们来看一下For命令的用法。For命令的具体格式如下:
      For %variable IN (set) do command [command-parameters],

     %variable——指定一个单一字母可替换的参数

      (set)——指定一个或一组文件,可以使用通配符

      command——指定对每个文件执行的命令

      command-parameters——为特定命令指定参数或命令行开关

      在批处理文件中使用 For 命令时,指定变量请使用“%%variable”,而不要用“ %variable”。变量名称是区分大小写的,所以“%i”不同于“%I”。由于For命令的用法和参数非常多,变化复杂,这里因篇幅原因就不再一一罗列了,用户可以在命令提示符后键入“For /?”来获得具体帮助。下面我们将直接进入实战,并结合实战讲述For命令的具体用法。

      1.给文本文件批量加上落款

      在很多情况下,我们编辑处理完文档,都要给文件加上一个包括“通信地址、QQ、E-MAIL等等信息”的落款,如投往编辑部的稿件。如果只有一篇文章,直接输入倒也罢了,但假如你有很多这样的文件,该怎么办呢?难道每一篇稿件都要手工一个字一个字地输入那一成不变的落款吗?NO!完全没有必要这样费神,我们可以一次性地给所有文件添加上落款,假如我们要给放在“ABCDE”目录下的所有文本文件加上落款。那么就请先建一个名为Address.txt的文本文件,录入通信地址、QQ、E-mail等等信息,保存到E盘的根目录。

      再新建一个文本文件,录入以下内容:

      MD E:\TEMPabcde

      for /r E:\ABCDE %%I in (*.txt) do copy %%I+E:\address.txt E:\tempABCDE\

      for /r E:\tempABCDE %%I in (*.txt) do copy %%I E:\ABCDE\

      echo y|del E:\TEMPabcde

      echo y|rd E:\TEMPabcde

      录入完毕,经检查确认无误后,另存为“给文件加落款.bat”,也保存到E盘的根目录。现在,只需双击此批处理文件,就可以为E:\ABCDE文件夹中所有的TXT文件加上落款。

      提示:For命令指定参数“%I”从“E:\ABCDE”文件夹中的所有文本文件中取值 ;“/r”参数表示包括子目录。

      2.批量获取文件列表

      如果我们需要制作某个目录下的文件清单,如电影文件的文件清单,可以用For命令来轻松完成。我们以制作F盘上的所有RM格式的电影文件的清单为例:

      先在F盘根目录下建一个名为“列文件清单.bat”的文本文件,然后输入以下内容并保存:

      For /r F:\ %%i in (*.rm) DO @echo %%~fi >>F:\RMList.txt

      双击此批处理文件,即可快速列出F盘上所有的以RM为扩展名的电影文件的清单。

      提示:For命令指定参数“%i”从F盘的所有以RM为扩展名的文件中取值;“@echo %% fi”表示将所有的RM文件及其完整路径显示出来;“>>F \RMList.txt”表示将输出结果重定向到F \RMList.txt文件中,打开该文件,即可看到详细的目录清单;“ f”表示完整路径。还可以使用“% n”(文件名)、“% x”(文件扩展名)、“% d”(驱动器)、“% p”(路径)、“% s”(完整路径)、“% t”(文件日期)、“% z”(文件大小)等参数。

    3.快速删除磁盘上的空文件夹

      假设我们要清理D盘上的空文件夹,那么请先用记事本建一个名为“kill.bat”的文件,在该文件中输入以下内容:

      dir d:\ /ad /b /s |sort /r >>d:\kill.txt

    For /f %%i in (d:\kill.txt) DO rd %%i

      echo y |del d:\kill.txt

      先查找并删除全部“Thumbs.db”文件,然后双击该文件,D盘上所有的空文件夹很快就消失的无影无踪了。

      提示:“dir d:\”表示列D盘上的所有目录包括子目录列表,其中参数“/ad”表示列所有目录;参数“/b”表示只列出文件夹名称而不显示标题信息或摘要:参数“/s”表示搜索,即查找D盘中的所有文件夹和子文件夹;“|”是管道符号,将Dir命令的结果传递给“sort”命令;“sort”命令表示排序;“/r”表示逆序列排序。之所以要逆序列排序,是因为通过逆序列排序后,D盘上的所有子文件夹总是会位于其父文件夹的前面,这样在用For命令删除空文件夹时,空的子文件夹被首先删除了,因此空的父文件夹就可以删除了。否则,因空的父文件夹中尚有空的子文件夹,会造成无法删除的情况。“>>d:\kill.txt”的作用是让屏幕回显重新定位到“d:\kill.txt”文件中。

      For 命令中参数“/f”的作用是让For命令从指定的文件中读取数据作为变量,示例是从Dir的结果文件“d:\kill.txt”文件中读取数据,每次读取一行传递给RD命令;RD命令的作用是删除由For命令传递过来的每一个文件夹,因RD命令无法删除尚有内容的文件夹,所以经过For命令的循环后,只是删除了所有的空文件夹,有内容的文件夹会完好无损地被保留下来。

      4.批量获取局域网中所有IP地址与主机名的对应关系

      如果你是网管,肯定需要获取一张本网段内所有IP地址与主机名的对照表。如果你不想使用第三方软件的话,不妨用For命令试试。

      在命令提示符窗口中输入以下命令:

      For /L %i in (0,1,254) DO ping -a -n 1 192.168..0.%i |Find /i "reply" >>E:\IPAddress.txt

      好了,等命令执行完毕,打开“E:\IPAddress.txt”文件,一张完整的IP与主机名的对照表已经初步形成了,你只需作简单的编辑修改即可打印输出了。

      提示:For命令指定参数“%i”从0开始,每次增加1,直到254为止,即一个C类网段的全部地址。如果用户的局域网自行定义的了IP地址,应根据实际情况设置,如可以为“172.16.0”;“-a”表示获取主机名;“-n -1”表示回显的次数为1次,默认情况下为4次;Find /i "reply“表示查找已响应的主机,即已ping通的主机;“E:\IPAddress.txt”表示将屏幕回显内容输入到“:\IPAddress.txt”文件中。


    批处理详细教程——for命令



    对一组文件逐一运行一条命令。该命令可用在批处理文件中,也可命令提示符下直接调用。

    语法:
    for在批处理器中使用的语法如下:
    FOR %%变量 IN(集合) DO 命令[命令参数]
    for在命令提示符下使用的语法如下:
    FOR %变量 IN(集合) DO 命令[命令参数]
    参数 :

    %%变量或%变量

    代表一个可替换的变量。FOR命令将用指定的一组文件中的每一个文本字符串来替换%%变量(或%变量),直到此命令(在命令参数中指定的)处理完所有的文件为止。
    用%%变量来执行一批处理程序中的FOR命令。用%变量来执行命令提示符下的FOR命令。
    集合
    指定一个或多个要用特定命令对其进行处理的文件或文本字符串。圆括号必须得有。
    命令
    指定要对一组文件中每一文件进行处理的命令。
    命令参数
    指定要用于指定命令(如果指定的命令使用了任何参数或开头)的任何参数或开关。
    使用关键字IN及DO

    IN和DO并不是参数,但FOR命令中要求这两个关键字。如果省略了这两个关键字,
    则MS-DOS将显示一错误信息。
    使用可替代变量

    除了数字0到9之外,你可把任何字符用作变量,以避免与批处理参数%0到%9的混淆。对简单的批处理程序来说,象%%F这样的一个单一字符就足够了。在复杂的批处理程序中,你可把多个值用于变量以区分不同的可替换变量。然而,在同一命令行上不能嵌套(增加)多个FOR命令。
    指定一组文件

    集参数可代表一组文件或几组文件。你可用通配符(*及?)来指定一文件集。下面是合法的文件集:

    (*.doc)

    (*.doc *.txt *.me)

    (jan*.doc jan*.rpt feb*.doc feb*.rpt)

    (ar??1991.* ap??1991.*)

    当你使用FOR命令时,集中的第一个值将代替%%变量(或%变量),而为了处理此值MS-DOS将执行指定的命令;此过程一直持续进行,直到MS-DOS将对应于集中的值(或多值)的所有文件(或多组文件)处理完毕为止。

    FOR─例子

    假设你想用TYPE命令来显示当前目录下扩展名.DOC或.TXT的所有文件的内容。为了做到这一点要使用可替代变量%F,并在命令提示符下输下面的命令。
    for %f in (*.doc *.txt) do type %f

    在此例中,当前目录下扩展名为.DOC或.TXT的每一个文件将代替%F变量,直到显示出每一个文件的内容为止。若把每一个%F都替换成%%F,则此命令可用于一批处理文件。否则,MS-DOS将忽略此变量而显示错误信息。
    MS-DOS支持你想用于特定命令的开关、管道及重定向符。例如,为了把前一例的输出送到PRN(默认打印机口),应输入下面的命令:

    for %f in (*.doc *.txt) do type %f > prn

  • 上一篇: 输入法图标丢失找回方法
  • 下一篇: 没有了
  • 发表评论   告诉好友   打印此文  收藏此页  关闭窗口  返回顶部
    热点文章
     
    推荐文章
     
    相关文章
    网友评论:(只显示最新5条。)
    | 关于本站 | 设为首页 | 加入收藏 | 站长邮箱 | 友情链接 | 与我同在 |


    Copyright© 2004-2007 dokoo.net .All Rights Reserved