For命令在Windows中的妙用
在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”文件中。
欢迎关注本站公众号,获取更多信息