批处理之FOR参数/F与eol、skip的用法

发布时间:2020-07-30编辑:脚本学堂
本文介绍下,在批处理中/F参数以及eol、skip的详细用法,有需要的朋友参考下。

一,先来看/F 参数
 
格式:
FOR /F ["options"] %%variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %%variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %%variable IN ('command') DO command [command-parameters]
 
用法:
常用于文本信息编辑,如查询、提取、替换等等。
迭代及文件解析,使用文件解析来处理命令输出、字符串及文件内容。
 
注意:
带引号的字符串"options"包括一个或多个指定不同解析选项的关键字:eol=、skip=、delims=、tokens=和usebackq。后面将逐个讲解。
 
先创建一个文本文件a.txt,内容如下:
 

::我的测试
aaa,bbb,ccc,ddd
iii jjj kkk lll
eee,fff,ggg,hhh
你好,甲兵,考试,吃饭
 

将本内容保存好,后面内容都要用到该文本做试验。
 
二,eol=c 忽略以某字符开头的行
格式:
FOR /F "eol=c" %%I       IN (Command1)   DO Command2
用法:
eol=c
一句话总结:表示忽略(隐藏、屏蔽)开头字符是C的行。
“指定行尾字符(仅一个字符)。”这是帮助文件里的话,目前不理解它的用法。
Eol=
默认情况下屏蔽冒号开头的行
如果C是文本某行开头第一个字符,即“eol=a”,它将在屏幕上屏蔽掉以a开头的行。
 
例如:文本“静夜思.txt”的内容是:
床前明月光,
疑是地上霜;
举头望明月,
低头思故乡。
 
如何忽略掉文本文件a.txt中的第三行:“举头望明月,”?
 

复制代码 代码示例:
@echo off
for /f "eol=举" %%i in (静夜思.txt) do echo %%i
pause>nul

运行结果将隐藏第三行。
 
注意:
如果忽略的字符串的开头是重复字符,则EOL后只需截取一个字符。
如要“aaa”,“eol=”后只需一个“a”就可以了。同样,双冒号“::”只取一个。
 
三,skip=n 忽略前N行
格式:
FOR /F "skip=n" %%I       IN (Command1)   DO Command2
用法:
一句话总结:忽略文本开头的前N行。
skip=n表示忽略(屏蔽、隐藏)从第一行到第N行的内容。(n>0)
 
例:忽略文本a的前四行。
 

复制代码 代码示例:
@echo off
for /f "skip=4" %%i in (a.txt) do echo %%i
pause>nul
 

运行结果将只显示第五行。