首页 > 代码库 > 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=cskip=ndelims=xxxtokens=x,y,m-nusebackq

   

   

如:当前目录下有一个 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