首页 > 代码库 > for 续1
for 续1
--------siwuxie095
/f
是四个参数中最复杂的一个,非常强大,不过其复杂性
令人望而生畏
/f 用途:
能够对字符串进行操作,也能够对命令的返回值进行操作,
还可以访问硬盘上的 ASCII 码文件,比如 txt 文档等
常用于文本信息编辑,如查询、提取、替换等
格式:
FOR /F ["options"] %%variable IN (file-set) DO command [command-parameters] 文件名
file-set 不用引号(如果文件名含有空格时,就需要借助 usebackq 了)
FOR /F ["options"] %%variable IN ("string") DO command [command-parameters] 字符串
string 要用双引号
FOR /F ["options"] %%variable IN (‘command‘) DO command [command-parameters] 命令
command 要用单引号
注意:带引号的字符串 "options" 包括一个或多个指定不同解析选项的关键字:
eol=c、skip=n、delims=xxx、tokens=x,y,m-n、usebackq
如:当前目录下有一个 test.txt 文件(格式改为ANSI,否则乱码)
@echo off for /f %%i in (test.txt) do echo %%i pause |
运行一览:一下子显示文件的所有内容
如果要逐行显示:
@echo off for /f %%i in (test.txt) do echo %%i & pause>nul pause |
解析选项关键字详解:
(一)eol=c 忽略(隐藏、屏蔽)所有以字符是 C 开头的行
格式:
FOR /F "eol=c" %%I IN (Command1) DO Command2
"指定行尾字符(仅一个字符)",来源于帮助文件,尚不清楚其含义
eol=
默认情况下屏蔽冒号开头的行(无论是中文冒号还是英文冒号,都会被屏蔽掉)
但冒号本身不会被屏蔽,还是会被显示出来
注意:这里被处理的文本里的冒号和后面的文字字符必须有空格隔开,
否则无法对文本进行屏蔽
eol=c 格式:
如:文本 静夜思.txt 的内容:
要略掉第三行,如下:
@echo off for /f "eol=举" %%i in (静夜思.txt) do echo %%i pause>nul |
sublime中:
运行一览:
上面的 test.bat 和 静夜思.txt 实际上在同一目录下,所以
没有指出 静夜思.txt 的路径,test.bat 自动在当前目录下
搜索,若没有 静夜思.txt,显示找不到文件
若 test.bat 在F盘,静夜思.txt 在D盘,则需要指明路径:
@echo off for /f "eol=举" %%i in (D:\静夜思.txt) do echo %%i pause >nul |
eol=c 格式,不能屏蔽以空格开头的行
如:文本 春夜喜雨.txt 的内容:
代码:
@echo off rem 等号 = 后面一个空格 for /f "eol= " %%i in (春夜喜雨.txt) do echo %%i pause>nul |
sublime中:
运行一览:将原文本前导空格都屏蔽掉,其他全部输出
eol=c 格式,空格不在行首,能屏蔽掉该行空格以后的内容
如:文本 念奴娇.txt 的内容:
代码:
@echo off rem 等号 = 后面一个空格 for /f "eol= " %%i in (念奴娇.txt) do echo %%i pause>nul |
sublime中:
运行一览:所有空格以后的内容都被屏蔽掉
eol=c 格式, c 字符不是某一行的开头字符,就不能屏蔽掉该行
同样使用上面的 春夜喜雨.txt:
@echo off for /f "eol=风" %%i in (春夜喜雨.txt) do echo %%i pause>nul |
运行一览:将原文本前导空格都屏蔽掉,其他全部输出
eol= 格式
如:春夜喜雨.txt 改为:
(加的冒号中英文格式均可,和后面的文字之间要隔空格,
否则无法屏蔽)
代码:
@echo off rem 等号 = 后面无空格,直接用引号 for /f "eol=" %%i in (春夜喜雨.txt) do echo %%i pause>nul |
sublime中:
运行一览:屏蔽并没有屏蔽冒号本身
若要屏蔽冒号:
@echo off rem 等号 = 后面加一个冒号,格式和诗中所加冒号一致 rem 这里均采用的是中文冒号 for /f "eol=:" %%i in (春夜喜雨.txt) do echo %%i pause>nul |
sublime中:
运行一览:所有以冒号开头的行都被屏蔽掉,包括冒号本身
【made by siwuxie095】
for 续1