例4. 给文本文件批量加上落款
在很多情况下,我们编辑处理完文档,都要给文件加上一个包括“通信地址、QQ、E-MAIL等等信息”的落款,如投往编辑部的稿件。如果只有一篇文章,直接输入倒也罢了,但假如你有很多这样的文件,该怎么办呢?难道每一篇稿件都要手工一个字一个字地输入那一成不变的落款吗?NO!完全没有必要这样费神,我们可以一次性地给所有文件添加上落款,假如我们要给放在“c:\java”目录下的所有文本文件加上落款。那么就请先建一个名为Address.txt的文本文件,录入通信地址、QQ、E-mail等等信息,保存到c盘的根目录。
再新建一个文本文件,录入以下内容:
@echo off
MD c:\tempjava
for /r c:\java %%I in (*.txt) do copy %%I+c:\address.txt c:\tempjava
for /r c:\tempjava %%I in (*.txt) do copy %%I c:\java
echo y|del c:\tempjava
pause
录入完毕,经检查确认无误后,另存为“给文件加落款.bat”,也保存到c:\java目录。现在,只需双击此批处理文件,就可以为c:\java文件夹中所有的TXT文件加上落款。
提示:
1、For命令指定参数“%I”从“c:\java”文件夹中的所有文本文件中取值 ;“/r”参数表示包括子目录。
2、 echo y|del c:\tempjava这个命令是说将参数y传给del命令。
例 5 批量获取文件列表
如果我们需要制作某个目录下的文件清单,如电影文件的文件清单,可以用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”(文件大小)等参数。
例6. 快速删除磁盘上的空文件夹
假设我们要清理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命令的循环后,只是删除了所有的空文件夹,有内容的文件夹会完好无损地被保留下来。
你是世上最强的磁石,走近你的磁场,巳没有逃脱的可能,我巳完全被你俘虏,注定此生为你而沉醉。

没有评论:
发表评论