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) doecho%%i

pause

  

运行一览:一下子显示文件的所有内容

  

  

  

如果要逐行显示:

@echo off

for /f %%i in (test.txt) doecho%%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) doecho%%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) doecho%%i

pause >nul

  

  

  

eol=c 格式,不能屏蔽以空格开头的行

  

如:文本春夜喜雨.txt 的内容:

  

  

  

代码:

@echo off

rem 等号 = 后面一个空格

for /f "eol= "%%i in (春夜喜雨.txt) doecho%%i

pause>nul

  

  

sublime中:

  

  

运行一览:将原文本前导空格都屏蔽掉,其他全部输出

  

  

  

  

eol=c 格式,空格不在行首,能屏蔽掉该行空格以后的内容

  

如:文本念奴娇.txt 的内容:

  

  

代码:

@echo off

rem 等号 = 后面一个空格

for /f "eol= "%%i in (念奴娇.txt) doecho%%i

pause>nul

  

sublime中:

  

  

运行一览:所有空格以后的内容都被屏蔽掉

  

  

  

  

  

eol=c 格式, c 字符不是某一行的开头字符,就不能屏蔽掉该行

  

同样使用上面的春夜喜雨.txt

@echo off

for /f "eol="%%i in (春夜喜雨.txt) doecho%%i

pause>nul

  

运行一览:将原文本前导空格都屏蔽掉,其他全部输出

  

  

  

  

  

eol= 格式

  

如:春夜喜雨.txt 改为:

(加的冒号中英文格式均可,和后面的文字之间要隔空格,

否则无法屏蔽)

  

  

  

代码:

@echo off

rem 等号 = 后面无空格,直接用引号

for /f "eol="%%i in (春夜喜雨.txt) doecho%%i

pause>nul

  

sublime中:

  

  

运行一览:屏蔽并没有屏蔽冒号本身

  

  

  

若要屏蔽冒号:

@echo off

rem 等号 = 后面加一个冒号,格式和诗中所加冒号一致

rem 这里均采用的是中文冒号

for /f "eol="%%i in (春夜喜雨.txt) doecho%%i

pause>nul

  

sublime中:

  

  

运行一览:所有以冒号开头的行都被屏蔽掉,包括冒号本身

  

  

  

  

  

【made by siwuxie095】

  

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值