for /f 文件操作
在批处理中,for是最为常见的一种循环操作。使用参数/d、/f、/l等参数,它可以实现对目录、文件、字符串、序列等进行循环遍历操作。
例如,它可以依次查找每个目录下的文件,查找符合指定条件的文件。
我们这里介绍的是对文件的遍历(使用参数 /f)。
它会依次读取文件的每一行(如果没有特殊处理,空行自动将被忽略),在for循环体里按照您指定的操作进行处理。
文件处理是最常用的情况是:系统按照您指定分隔符,将每一行分隔成若干列,按照循环体中操作,处理这若干列。在for /f中我们如何指定分隔符,如何表示各个列呢?
1. 用参数 delims=设置分隔符
指定分隔符,用到参数 ***delims=***,等号后跟随的每个字符是分隔符,这些分隔符将行分隔成若干列,在如下示例中,分隔符为单引号和#号,任何分隔符出现的地方,行将被分隔。(需要注意的是分隔符连续出现时,只相当于一个分隔符)
2 用参数tokens=设置要提取的列
如下实例中的 tokens=2,* 表示提取第2列,第二列之后的所有内容作为一个整体。后面的%%i 表示提取的第一列将使用%%i表示,提取的第2,3…等列依次就使用%%j,%%k…
@echo off
setlocal enabledelayedexpansion
for /f "delims='# tokens=2,*" %%i in (temp.txt) do (
set link_name=%%i
set remain=%%j
echo !link_name!
echo !remain%! )
pause
结果如下:依次将每行分隔得到的第二列,以及其后的所有列打印出来了
为了方便大家使用,temp.txt文件内容贴出来了
href=’#grade_4’ :it is #simple# example01。
href=’#grade_5’ :it is #simple# example02。
这里额外补充一下:
setlocal enabledelayedexpansion 是变量延时扩展,当变量的值在循环体重改变,而我们要使用这些变量值时,使用它。