|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
在Windows中,我们经常要批量地来完成相同的工作,很多用户往往是上网搜索第三方软件来完成。其实在Windows中,巧妙地利用For命令就可以很轻松地完成很多批量工作。为了更好地理解我们的下一步实战,先让我们来看一下For命令的用法。For命令的具体格式如下: 5 i- d# Y$ w5 Q% R+ F. q
B- g. G4 M3 h, x; W For %variable IN (set) do command [command-parameters],
* e0 A6 A. a* l( Z9 B. V7 l3 I& Q7 P
%variable——指定一个单一字母可替换的参数
1 `4 Q. P: H! A3 k" M/ o& Y" x! s" Z) ~; v4 ?5 a2 {
(set)——指定一个或一组文件,可以使用通配符
8 n% O \- p! f9 M, ~6 I
* G' w2 ^/ |$ @: J0 V; s( ~ command——指定对每个文件执行的命令 : e5 j$ Z9 D% I- Z
/ v t1 N5 o9 E/ x( n
command-parameters——为特定命令指定参数或命令行开关 8 m( I7 n( s/ P0 O
% {& P {1 G$ l1 T' I2 j% v 在批处理文件中使用 For 命令时,指定变量请使用“%%variable”,而不要用“ %variable”。变量名称是区分大小写的,所以“%i”不同于“%I”。由于For命令的用法和参数非常多,变化复杂,这里因篇幅原因就不再一一罗列了,用户可以在命令提示符后键入“For /?”来获得具体帮助。下面我们将直接进入实战,并结合实战讲述For命令的具体用法。
( T- ^% d ~5 ?& A2 B3 j3 m r4 s R. _1 ]. R! l$ B. }
1. 给文本文件批量加上落款
* e. C- f! I/ n2 ^; c+ ^( ~ v& _3 U" ~. f |4 e
在很多情况下,我们编辑处理完文档,都要给文件加上一个包括“通信地址、QQ、E-MAIL等等信息”的落款,如投往编辑部的稿件。如果只有一篇文章,直接输入倒也罢了,但假如你有很多这样的文件,该怎么办呢?难道每一篇稿件都要手工一个字一个字地输入那一成不变的落款吗?NO!完全没有必要这样费神,我们可以一次性地给所有文件添加上落款,假如我们要给放在“ABCDE”目录下的所有文本文件加上落款。那么就请先建一个名为Address.txt的文本文件,录入通信地址、QQ、E-mail等等信息,保存到E盘的根目录。 & P, @, ?+ W1 n3 H1 d- ^
+ }7 @' L+ D% y3 ?; T `' s- @4 s1 E
再新建一个文本文件,录入以下内容: 8 {7 G D& k3 ]' d. ]4 U
+ R) A; {6 }/ r
MD E:\TEMPabcde
: @2 n) L2 d6 a6 ^6 o6 b6 D# k/ x
0 U2 ?; C V1 t/ q4 I% u for /r E:\ABCDE %%I in (*.txt) do copy %%I+E:\address.txt E:\tempABCDE\ h8 a! v$ r, l
5 a- ?! H* O( @+ Z for /r E:\tempABCDE %%I in (*.txt) do copy %%I E:\ABCDE\ ( U& o7 p" f1 ^1 e& U2 ]
2 r2 i3 W2 F2 m
echo y|del E:\TEMPabcde 0 Z/ q8 W. P6 v5 J u; {- `
k0 g6 I% w$ C$ @ r echo y|rd E:\TEMPabcde
1 C! T/ ^% i/ h2 [: t; S. p
1 X3 z$ N( ~! l- V0 F; H8 c/ x 录入完毕,经检查确认无误后,另存为“给文件加落款.bat”,也保存到E盘的根目录。现在,只需双击此批处理文件,就可以为E:\ABCDE文件夹中所有的TXT文件加上落款。
- Z# [% o: H( c4 D, U+ R* |/ \, q+ y% R! W1 m/ Q8 Q" q& z& K
For命令指定参数“%I”从“E:\ABCDE”文件夹中的所有文本文件中取值 ;“/r”参数表示包括子目录。 7 t+ H) X+ Y+ R( @( f7 q
' E. z# Z* c$ d# L% z$ K
2. 批量获取文件列表 9 o% k8 K% j. C$ c
3 I F3 ^0 D8 w% v. Y 如果我们需要制作某个目录下的文件清单,如电影文件的文件清单,可以用For命令来轻松完成。我们以制作F盘上的所有RM格式的电影文件的清单为例:
3 M) k- d! ~, i1 Z2 R, c! P. h+ ~1 q1 z7 ~- \2 Q$ Q
先在F盘根目录下建一个名为“列文件清单.bat”的文本文件,然后输入以下内容并保存: 2 C$ S& w! N9 _6 {7 d7 k) c
( y- ^% q( M4 r1 o S3 P% O For /r F:\ %%i in (*.rm) DO @echo %%~fi >>F:\RMList.txt 7 @ l! ]+ H& a/ A! p: F$ v
! U/ g! E: T6 _( Q P( o/ N
双击此批处理文件,即可快速列出F盘上所有的以RM为扩展名的电影文件的清单。
3 {) O; @6 `, a( ~& R
+ f! c& g" ~% r) k* N0 h- ^) L For命令指定参数“%i”从F盘的所有以RM为扩展名的文件中取值;“@echo %%fi”表示将所有的RM文件及其完整路径显示出来;“>>F\RMList.txt”表示将输出结果重定向到F\RMList.txt文件中,打开该文件,即可看到详细的目录清单;“f”表示完整路径。还可以使用“%n”(文件名)、“%x”(文件扩展名)、“%d”(驱动器)、“%p”(路径)、“%s”(完整路径)、“%t”(文件日期)、“%z”(文件大小)等参数。
; \5 j1 ]3 P* F/ a. i; A/ z- p* \! Z4 I9 B! j8 W4 `& A$ m
3. 快速删除磁盘上的空文件夹
% E4 ?; u3 G; p. O' V w* T' w9 z2 b
3 h+ {/ d* ]" c2 F9 S4 G$ L 假设我们要清理D盘上的空文件夹,那么请先用记事本建一个名为“kill.bat”的文件,在该文件中输入以下内容:
3 j6 Y5 q1 I3 c4 f# `% J) P5 B$ Z3 S3 ]. v
1 r9 ]( z5 F! W7 r9 p# c w/ E. `0 [ dir d:\ /ad /b /s |sort /r >>d:\kill.txt 8 ]! w3 A6 z: R6 Z
% p: L( L4 Z! d For /f %%i in (d:\kill.txt) DO rd %%i
( c D2 V- D9 O5 s3 c3 v( S1 X5 w/ ]6 C/ T/ J# ?: i, y/ n
echo y |del d:\kill.txt A# I" M, X. N* G
* q5 I6 H( n$ y5 p T9 u
先查找并删除全部“Thumbs.db”文件,然后双击该文件,D盘上所有的空文件夹很快就消失的无影无踪了。
* |5 o0 ]1 O6 V3 o- l6 y
, [8 ?3 t- l0 U2 f8 v* z( u0 r& {# c dir d:\”表示列D盘上的所有目录包括子目录列表,其中参数“/ad”表示列所有目录;参数“/b”表示只列出文件夹名称而不显示标题信息或摘要:参数“/s”表示搜索,即查找D盘中的所有文件夹和子文件夹;“|”是管道符号,将Dir命令的结果传递给“sort”命令;“sort”命令表示排序;“/r”表示逆序列排序。之所以要逆序列排序,是因为通过逆序列排序后,D盘上的所有子文件夹总是会位于其父文件夹的前面,这样在用For命令删除空文件夹时,空的子文件夹被首先删除了,因此空的父文件夹就可以删除了。否则,因空的父文件夹中尚有空的子文件夹,会造成无法删除的情况。“>>d:\kill.txt”的作用是让屏幕回显重新定位到“d:\kill.txt”文件中。
9 K6 b7 A* G. k( E4 p& f. ^* s2 l0 }9 c/ ~/ b
For 命令中参数“/f”的作用是让For命令从指定的文件中读取数据作为变量,示例是从Dir的结果文件“d:\kill.txt”文件中读取数据,每次读取一行传递给RD命令;RD命令的作用是删除由For命令传递过来的每一个文件夹,因RD命令无法删除尚有内容的文件夹,所以经过For命令的循环后,只是删除了所有的空文件夹,有内容的文件夹会完好无损地被保留下来。 . |, e1 r% i4 l+ e0 ]0 B7 Z
" G* f8 H# P0 H6 V5 o 4. 批量获取局域网中所有IP地址与主机名的对应关系
) f! D" c. V9 n2 R
. \' B& B6 s2 l3 s 如果你是网管,肯定需要获取一张本网段内所有IP地址与主机名的对照表。如果你不想使用第三方软件的话,不妨用For命令试试。 ) B5 v% ~# W1 g: ^3 ^* a
2 r/ F$ }! O+ F1 `
在命令提示符窗口中输入以下命令: , N1 f, Y+ P8 P* c4 d$ h e: l( [
2 `2 t0 b3 X; G1 t$ @' z0 N4 c
For /L %i in (0,1,254) DO ping -a -n 1 192.168..0.%i |Find /i "reply" >>E:\IPAddress.txt
! y3 J0 V, \' }& k. V8 n
/ ^. z, A, Q; Y 好了,等命令执行完毕,打开“E:\IPAddress.txt”文件,一张完整的IP与主机名的对照表已经初步形成了,你只需作简单的编辑修改即可打印输出了。
8 e8 }+ N: C9 K7 I% r9 q: a+ `1 y( e- L7 [1 N5 _) s2 t8 `# `$ G5 X
For命令指定参数“%i”从0开始,每次增加1,直到254为止,即一个C类网段的全部地址。如果用户的局域网自行定义的了IP地址,应根据实际情况设置,如可以为“172.16.0”;“-a”表示获取主机名;“-n -1”表示回显的次数为1次,默认情况下为4次;Find /i "reply“表示查找已响应的主机,即已ping通的主机;“E:\IPAddress.txt”表示将屏幕回显内容输入到“:\IPAddress.txt”文件中。 |
|