批处理中for语句的基本用法

语法:

在CMD窗口:

for %I in (command1) do command2

在批处理文件中:

for %%I in (command1) do command2

如何区分cmd窗口和批处理文件两种环境:在cmd窗口中,for之后的形式变量I必须使用单百分号引用,即%I;而在批处理文件中,引用形式变量I必须使用双百分号,即%%I。为了方便起见,若不是特别强调,以下的讲解都以批处理文件环境为例。

 

for语句的基本要素:

     1、for、in和do是for语句的关键字,它们三个缺一不可;
  2、%%I是for语句中对形式变量的引用,就算它在do后的语句中没有参与语句的执行,也是必须出现的;
  3、in之后,do之前的括号不能省略;
  4、command1表示字符串或变量,command2表示字符串、变量或命令语句;

一个简单的for语句:

@echo off
for %%I in (bbs.bathome.net) do echo %%I
pause

保存为批处理文件并执行,将会在弹出的批处理窗口中看到这样的信息:

        1、for语句的形式变量I,可以换成26个字母中的任意一个,这些字母会区分大小写,也就是说,%%I和%%i会被认为不是同一个变量;形式变量I还可以换成其他的字符,但是,为了不与批处理中的%0~%9这10个形式变量发生冲突,请不要随意把%%I替换为%%0 ~%%9中的任意一个;
  2、in和do之间的command1表示的字符串或变量可以是一个,也可以是多个,每一个字符串或变量,我们称之为一个元素,每个元素之间,用空格键、跳格键、逗号、分号或等号分隔;
  3、for语句依次提取command1中的每一个元素,把它的值赋予形式变量I,带到do后的command2中参与命令的执行;并且每次只提取一个元素,然后执行一次do后的命令语句,而无论这个元素是否被带到command2中参与了command2的运行;当执行完一次do后的语句之后,再提取command1中的下一个元素,再执行一次command2,如此循环,直到command1中的所有元素都已经被提取完毕,该for语句才宣告执行结束;

其中,第3点是最为关键的,它描述了for语句的执行过程,是for语句的精髓所在

看一个例子:

@echo off
for %%I in (bbs,bathome,net) do echo %%I
pause

保存为批处理文件并执行,将会在弹出的批处理窗口中看到这样的信息:

如果把 bbs.bathome.net 这个字符串中的点号换为空格、跳格或等号,执行结果将和example2的执行结果别无二致。
检测当前硬盘都有哪些分区:

@echo off
set str=c d e f g h i j k l m n o p q r s t u v w x y z
echo 当前硬盘的分区有:
for %%i in (%str%) do if exist %%i: echo %%i:
pause

保存为批处理文件并执行,将会在弹出的批处理窗口中看到这样的信息:

高级应用

当前目录下都有哪些文件:

@echo off
for %%i in (*.*) do echo "%%i"
pause

保存为批处理文件并执行,将会在弹出的批处理窗口中看到这样的信息:

练习:用for语句建立test1.txt、test2.txt和test3.txt三个文本文件。

 

你可能感兴趣的:(DOS)