批处理之for /f


通常,我们使用批处理命令来处理文本,而解析文本主要使用的就是for /f,通过几个常见使用场景的例子,来感受for /f的使用方式吧。

显示文本内容

描述:将同一目录下的test.txt的内容全部显示出来。

test.txt内容如下:
111
222
333
@echo off
for /f %%i in (test.txt) do echo %%i & pause
pause

说明:运行这段代码,可以发现,每次输出一行后需要按任意键后才输出下一行,也就是说,for /f是在逐行解析文本内容的。

字符串截取

描述:以,为分隔符,截取第一个,之前的内容。

test.txt内容如下:
1,1,1
2,2,2
3,3,3
@echo off
for /f "delims=," %%i in (test.txt) do echo %%i
pause

说明:运行可以发现,每行输出的内容里第一个,及其之后的内容不见了,即提取了每一行第一个分隔符之前的字符串内容,分隔符就是通过开关delims设置的如有多个分隔符都写出来即可"delims=,.",即一次可以指定多个分隔符,如果没有设置,那么分隔符默认是空格和Tab键的。

截取指点段字符串

描述:以,为分隔符,取分割后的第三段字符串。

test.txt内容如下:
11,22,33,44,55
@echo off
for /f "delims=, tokens=3" %%i in (test.txt) do echo %%i
pause

说明:运行这段代码,会输出33,也就是第三段字符串,这里的tokens就是表示提取哪一段分割段的,如果要提取多段字符串,只要改成这样既可:

@echo off
for /f "delims=, tokens=2,5" %%i in (test.txt) do echo %%i %%j
pause

说明:运行这段代码,输出为22 55,如果tokens指定了多个数字,for和in之间的形式变量为%%i,那么第一个数字2指代内容用%%i来表示,第二个数字5指代的内容用%%j来表示…如果这里的%%i换成%%a,那么第二个数字5指代的内容就要用%%b来表示,如果这里的%%i换成%%x,那么第二个数字5指代的内容就要用%%y来表示。
tokens中如果数字连续,比如"tokens=1,3,4,5,6",等价于"tokens=1,3-6"。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页