在Windows中我们经常要批量地来完成相同的工作很多用户往往是上网搜索第三方软件来完成其实在Windows中巧妙地利用For命令就可以很轻松地完成很多批量工作为了更好地理解我们的下一步实战先让我们来看一下For命令的用法For命令的具体格式如下: For %variable IN (set) do command [commandparameters] %variable——指定一个单一字母可替换的参数 (set)——指定一个或一组文件可以使用通配符 command——指定对每个文件执行的命令 commandparameters——为特定命令指定参数或命令行开关 在批处理文件中使用 For 命令时指定变量请使用%%variable而不要用 %variable变量名称是区分大小写的所以%i不同于%I由于For命令的用法和参数非常多变化复杂这里因篇幅原因就不再一一罗列了用户可以在命令提示符后键入For /?来获得具体帮助下面我们将直接进入实战并结合实战讲述For命令的具体用法 给文本文件批量加上落款 在很多情况下我们编辑处理完文档都要给文件加上一个包括通信地址QQEMAIL等等信息的落款如投往编辑部的稿件如果只有一篇文章直接输入倒也罢了但假如你有很多这样的文件该怎么办呢?难道每一篇稿件都要手工一个字一个字地输入那一成不变的落款吗?NO!完全没有必要这样费神我们可以一次性地给所有文件添加上落款假如我们要给放在ABCDE目录下的所有文本文件加上落款那么就请先建一个名为Addresstxt的文本文件录入通信地址QQEmail等等信息保存到E盘的根目录 再新建一个文本文件录入以下内容: MD E:\TEMPabcde for /r E:\ABCDE %%I in (*txt) do copy %%I+E:\addresstxt 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参数表示包括子目录 批量获取文件列表 如果我们需要制作某个目录下的文件清单如电影文件的文件清单可以用For命令来轻松完成我们以制作F盘上的所有RM格式的电影文件的清单为例: 先在F盘根目录下建一个名为列文件清单bat的文本文件然后输入以下内容并保存: For /r F:\ %%i in (*rm) DO @echo %%~fi >>F:\RMListtxt 双击此批处理文件即可快速列出F盘上所有的以RM为扩展名的电影文件的清单 提示:For命令指定参数%i从F盘的所有以RM为扩展名的文件中取值;@echo %%fi表示将所有的RM文件及其完整路径显示出来;>>F\RMListtxt表示将输出结果重定向到F\RMListtxt文件中打开该文件即可看到详细的目录清单;f表示完整路径还可以使用%n(文件名)%x(文件扩展名)%d(驱动器)%p(路径)%s(完整路径)%t(文件日期)%z(文件大小)等参数 快速删除磁盘上的空文件夹 假设我们要清理D盘上的空文件夹那么请先用记事本建一个名为killbat的文件在该文件中输入以下内容: dir d:\ /ad /b /s |sort /r >>d:\killtxt For /f %%i in (d:\killtxt) DO rd %%i echo y |del d:\killtxt 先查找并删除全部Thumbsdb文件然后双击该文件D盘上所有的空文件夹很快就消失的无影无蹤了 提示:dir d:\表示列D盘上的所有目录包括子目录列表其中参数/ad表示列所有目录;参数/b表示只列出文件夹名称而不显示标题信息或摘要:参数/s表示搜索即查找D盘中的所有文件夹和子文件夹;|是管道符号将Dir命令的结果传递给sort命令;sort命令表示排序;/r表示逆序列排序之所以要逆序列排序是因为通过逆序列排序后D盘上的所有子文件夹总是会位于其父文件夹的前面这样在用For命令删除空文件夹时空的子文件夹被首先删除了因此空的父文件夹就可以删除了否则因空的父文件夹中尚有空的子文件夹会造成无法删除的情况>>d:\killtxt的作用是让屏幕回显重新定位到d:\killtxt文件中 For 命令中参数/f的作用是让For命令从指定的文件中读取数据作为变量示例是从Dir的结果文件d:\killtxt文件中读取数据每次读取一行传递给RD命令;RD命令的作用是删除由For命令传递过来的每一个文件夹因RD命令无法删除尚有内容的文件夹所以经过For命令的循环后只是删除了所有的空文件夹有内容的文件夹会完好无损地被保留下来 批量获取局域网中所有IP地址与主机名的对应关系 如果你是网管肯定需要获取一张本网段内所有IP地址与主机名的对照表如果你不想使用第三方软件的话不妨用For命令试试 在命令提示符窗口中输入以下命令: For /L %i in () DO ping a n %i |Find /i reply >>E:\IPAddresstxt 好了等命令执行完毕打开E:\IPAddresstxt文件一张完整的IP与主机名的对照表已经初步形成了你只需作简单的编辑修改即可打印输出了 提示:For命令指定参数%i从开始每次增加直到为止即一个C类网段的全部地址如果用户的局域网自行定义的了IP地址应根据实际情况设置如可以为;a表示获取主机名;n 表示回显的次数为次默认情况下为次;Find /i reply表示查找已响应的主机即已ping通的主机;E:\IPAddresstxt表示将屏幕回显内容输入到:\IPAddresstxt文件中 |