批处理 for 遍历文件内容

for循环支持遍历文件中的内容。


1 基础

语法

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

1)f:file,表示文件内容。

2)循环变量依次表示文件中的每一部分内容。“每一部分”可以进行指定,表示一个单词,表示一句,等。


代码

@ echo off

for /f %%i in (F:\99-task\data\file1.txt) do (
  echo xiaobuteach 文件内容:%%i
)

pause

file1.txt文件内容如下。

xiaobuteach-content-line1
xiaobuteach-content-line2
xiaobuteach-content-line3

运行结果

img


file2.txt中每一行有空格时的处理

@ echo off

for /f %%i in (F:\99-task\data\file2.txt) do (
  echo xiaobuteach 文件内容:%%i
) 

pause

file2.txt文件内容如下。

xiaobuteach1 content1 line1
xiaobuteach2 content2 line2
xiaobuteach3 content3 line3

运行结果

img

原因分析:

默认按行读取文件,每一行内容根据delims(默认值是空隔与制表符)进行进一步分割成多节,默认显示第1节(即tokens默认为1)。

2 delims用法

delims也可以同时指定多个自定义字符。


示例代码

@ echo off

for /f "delims=,. " %%i in (F:\99-task\data\file3.txt) do (
  echo xiaobuteach 文件内容:%%i
)

pause

注意事项

delims=,.的后面有一个空格。


file3.txt文件内容如下。

xiaobuteach1,content1.line1
xiaobuteach2 content2,line2
xiaobuteach3 content3,line3

运行结果

img


3 tokens用法

tokens指定仅包含单节:tokens=2

tokens指定包含多节内容:tokens=1,3,5

tokens指定包含所有节: tokes=*


代码

@ echo off

for /f "delims=,. tokens=*" %%i in (F:\99-task\data\file3.txt) do (
  echo xiaobuteach 文件内容:%%i
)

pause

运行结果

img