Windows怎么批处理读取文件内容_Windows如何用for /f命令逐行读取文本文件【方法】-1

如果您需要在Windows批处理脚本中读取文本文件的每一行内容,则可以使用for /f命令实现逐行解析。以下是多种可行的方法:

一、基础语法:使用 for /f 读取文件全部行

该方法适用于无特殊分隔符、无空行、无首尾空格干扰的标准文本文件,通过默认分隔符(空格、制表符)和令牌(第一列)提取每行原始内容。

1、新建一个批处理文件(例如read.bat),用记事本打开并输入以下内容:

2、@echo off

3、for /f "delims=" %%i in (test.txt) do echo %%i

4、保存后,确保同目录下存在名为test.txt的文本文件

5、双击运行批处理文件,即可逐行输出test.txt中的内容

注意:必须使用”delims=”参数关闭默认分隔符,否则每行将被截断为第一个单词

二、处理含空格或路径含空格的文件

当目标文件名或路径中包含空格时,直接引用会导致for /f误判为多个参数,需用引号包裹并配合usebackq启用反引号扩展模式。

1、将原命令修改为:for /f "usebackq delims=" %%i in ("C:\My Files\input.txt") do echo %%i

2、其中usebackq允许在双引号内指定文件路径

3、"delims="仍需保留以防止行内空格触发分割

注意:路径必须用英文双引号包围,且不能省略usebackq参数,否则报错“系统找不到文件”

三、跳过开头若干行并读取剩余内容

某些日志或导出文件前几行为标题或说明,实际数据从指定行开始,可通过skip参数跳过前置行。

1、例如跳过前两行:for /f "skip=2 usebackq delims=" %%i in ("data.log") do echo %%i

2、skip=2表示忽略前2行,从第3行起开始循环

3、若需同时跳过并限制读取行数,可额外添加maxlen参数(但for /f本身不支持maxlen,需配合其他逻辑)

注意:skip值必须为非负整数,且不能超过文件总行数,否则循环体不会执行

四、按指定分隔符提取特定字段

当文本为CSV、TSV等结构化格式时,可利用delims定义分隔符,并用tokens选取所需列。

1、对于逗号分隔的user.csv(内容如:Alice,25,Engineer):

2、执行:for /f "delims=, tokens=1,3" %%a in (user.csv) do echo Name:%%a Title:%%b

3、delims=,设定逗号为分隔符

4、tokens=1,3表示提取第1列与第3列,分别赋给%%a和%%b

注意:tokens索引从1开始,变量字母需按顺序连续分配(%%a、%%b、%%c…),不可跳用

五、读取时保留空行与首尾空格

默认情况下for /f会跳过空行,且自动截去每行首尾空格。若需完整保留原始格式,须改用set /p配合重定向逐行读取。

1、编写如下代码段:

2、@echo off

3、setlocal enabledelayedexpansion

4、for /f "delims=" %%i in (‘type test.txt ^| findstr /n "^"’) do (

5、set "line=%%i"

6、set "line=!line:*:=!"

7、echo(!line!

8、)

注意:此方案通过findstr /n为每行编号再剥离编号,可有效保留空行及首尾空格,但性能低于原生for/f

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。