批处理 for 遍历文件与文件夹

for循环支持遍历文件与文件夹,以及相应的递归遍历。

递归遍历:不仅访问到当前文件夹,还能访问到子文件夹,以及孙子文件夹中的内容。


1 遍历文件

1.1 准备数据

f:\99-task\data目录下:3个文件夹、3个文件。

img


f:\99-task\datadir1目录下:3个文件夹、3个文件。

img


1.2 语法

for %%循环变量 in (文件表达式) do (
  命令
)

1)文件表达式可以使用匹配符,例如:(F:\99-task\data*)表示data文件夹下的所有文件,但不包括二级子文件夹中的文件。

2)遍历文件夹下的所有文件,但不包含子文件夹。


1.3 代码

12-for-05-文件.bat,批处理文件内容如下。

@ echo off

for %%i in (F:\99-task\data\*) do (
  echo xiaobuteach 文件名:%%i
)

pause

1.4 运行结果

img


2 递归遍历文件

遍历当前文件夹与子文件夹中的文件。


语法

for /R 文件夹 %%循环变量 in (文件通配符) do (
  命令
)

1)r:recursion,递归。

2)/R参数:指定文件夹

3)in( )中的内容表示文件通配符。例如 *.txt表示扩展名为.txt的文本文件。


示例代码

批处理文件内容如下。

@ echo off

for /r "F:\99-task\data" %%i in (*.txt) do (
  echo xiaobuteach 文件名:%%i
)

pause

运行结果

img


遍历文件夹

语法

for /D %%循环变量 in (文件夹表达式) do (
  命令
)

d:directory,文件夹。

/D表示遍历文件夹,与( )中的文件夹表达式结合使用。


代码

批处理文件内容如下。

@ echo off

for /D %%i in (F:\99-task\data\*) do (
  echo xiaobuteach 文件夹名:%%i
)

pause

运行结果

img


4 递归遍历文件夹

遍历当前文件夹与子文件夹中所有的文件夹。


语法

for /D /R 文件夹 %%循环变量 in (文件夹通配符) do (
  命令
)

代码

批处理文件内容如下。

@ echo off

for /d /r F:\99-task\data %%i in (*) do (
  echo xiaobuteach 文件夹名:%%i
)

pause

运行结果

img