for 语句基础

本章节主要介绍 for 语句的基础知识:

for 语句基础

for 语句是对一组文件中的每一个文件执行某个特定命令。基本格式如下:

REM 在 CMD 窗口中
FOR %variable IN (set) DO command [command-parameters]

REM 在批处理文件中
FOR %%variable IN (set) DO command [command-parameters]

参数说明:

  •   %variable  指定一个单一字母可替换的参数,该参数用来存放 for 语句每次迭代的数据。

  •   (set)   指定一个或一组文件,可以使用通配符。

  •   command    指定对每个文件执行的命令。

  •   command-parameters    为特定命令指定参数或命令行开关。

注意:在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I。

for 语句依次提取 set 中的每一个元素,把它的值赋予形式变量 variable,带到 do 后的 command2 中参与命令的执行;并且每次只提取一个元素,然后执行一次 do 后的命令语句,而无论这个元素是否被带到 command2 中参与了command2 的运行;当执行完一次 do 后的语句之后,再提取 command1 中的下一个元素,再执行一次 command2,如此循环,直到 command1 中的所有元素都已经被提取完毕,该 for 语句才宣告执行结束。

实例:在 CMD 窗口执行简单的 for 循环。

C:\Users\Administrator>for %I in (ABC) do echo %I

C:\Users\Administrator>echo ABC
ABC

实例2:在批处理文件中定义一个非常简单的 for 循环,输出指定的字符串。

@echo off
for  %%I in (ABC) do (
    echo %%I
)
pause

如果你习惯将 for 和后面的命令写在一行,可以将上面实例修改如下:

@echo off
for  %%I in (ABC) do echo %%I
pause

输出结果:

C:\Users\Administrator\Desktop> test.bat
ABC
请按任意键继续. . .

for语句注意事项

for语句的形式变量I,可以换成26个字母中的任意一个,这些字母会区分大小写,也就是说,%%I 和 %%i 会被认为不是同一个变量;形式变量I还可以换成其他的字符,但是,为了不与批处理中的 %0~%9 这 10 个形式变量发生冲突,请不要随意把 %%I 替换为 %%0~%%9 中的任意一个。实例:

@echo off
for  %%A in (ABC) do echo %%A
for  %%I in (ABC) do echo %%I
for  %%Z in (ABC) do echo %%Z
REM %%J 和 %%j 是不同的两个变量
for  %%J in (ABC) do echo %%j
pause

输出结果:

C:\Users\Administrator\Desktop>test.bat
ABC
ABC
ABC
%j 
请按任意键继续. . .

in 和 do 之间的 command1 表示的字符串或变量可以是一个,也可以是多个,每一个字符串或变量,我们称之为一个元素,每个元素之间,用空格键、跳格键、逗号、分号或等号分隔。

实例:演示使用空格、分号、逗号和等号分割 command1。

@echo off
for  %%I in (A B C) do echo %%I
for  %%I in (A;B;C) do echo %%I
for  %%I in (A,B,C) do echo %%I
for  %%I in (A=B=C) do echo %%I
pause

输出结果:

C:\Users\Administrator\Desktop>test.bat
A
B
C
A
B
C
A
B
C
A
B
C
请按任意键继续. . .

现在,来分析上面代码中 for 语句的执行过程:

(1)for语句以空格、分号、逗号和等号为分隔符,把 A,B,C 这个字符串切分成三个元素:A、B和C,由此决定了do后的语句将会被执行3次。

(2)第一次执行过程是这样的:先把 A 这个字符串作为形式变量 I 的值,带入 do 后的语句中加以执行,也就是执行 echo %%I 语句,此时的 I 值为 A,因此,第一次执行的结果,将会在屏幕上显示 A 这个字符串;第二次执行和第一次执行的过程是一样的,只不过此时 I 的值已经被替换为 command1 中的第二个元素了,也就是 B 这个字符串;如此循环,当第三次 echo 执行完毕之后,整条 for 语句才算执行完毕;此时,将执行下一条语句,也就是 pause 命令。

for 语句实例

(1)使用批处理文件打印当前目录下面所有的文件名称。如下:

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

输出结果:

C:\Users\Administrator\Desktop>test.bat
"for.txt"
"test.bat"
请按任意键继续. . .

(2)使用批处理文件打印当前目录下面所有后缀为 txt 的文件名称。如下:

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

输出结果:

C:\Users\Administrator\Desktop>test.bat
"for.txt"
请按任意键继续. . .
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号