批处理 for 遍历文件与文件夹
for循环支持遍历文件与文件夹,以及相应的递归遍历。
递归遍历:不仅访问到当前文件夹,还能访问到子文件夹,以及孙子文件夹中的内容。
1 遍历文件
1.1 准备数据
f:\99-task\data目录下:3个文件夹、3个文件。
f:\99-task\datadir1目录下:3个文件夹、3个文件。
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 运行结果
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
运行结果
遍历文件夹
语法
for /D %%循环变量 in (文件夹表达式) do (
命令
)
d:directory,文件夹。
/D表示遍历文件夹,与( )中的文件夹表达式结合使用。
代码
批处理文件内容如下。
@ echo off
for /D %%i in (F:\99-task\data\*) do (
echo xiaobuteach 文件夹名:%%i
)
pause
运行结果
4 递归遍历文件夹
遍历当前文件夹与子文件夹中所有的文件夹。
语法
for /D /R 文件夹 %%循环变量 in (文件夹通配符) do (
命令
)
代码
批处理文件内容如下。
@ echo off
for /d /r F:\99-task\data %%i in (*) do (
echo xiaobuteach 文件夹名:%%i
)
pause
运行结果