找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 37929|回复: 10

[原创] 谈谈批处理for /f句式中的eol参数

[复制链接]
发表于 2009-1-11 23:31:45 | 显示全部楼层 |阅读模式
&&由于本人工作上的原因(被集团、省、市公司领导轮番检查考核了近两个月的时间),这阵子都没怎么上论坛了,作为管理层的
一员,我不得不为自己在论坛管理上的失职向广大的会员致以深深的歉意。
    现在这一切终于过去了,batman又有点时间和大家在一起了,本人这此感到十分高兴,并将尽全力来帮助大家。
    大家都知道for是批处理中最为强大的命令,对于个别人来说几乎已是达到“无for不批”了。而for命令中有for for /l for /d for /r for
/f 五种句式,而for /f句式中又有eol skip delim tokens usebackq几个参数。至于usebackq skip delims tokens这几个参数大家经常
会用到,论坛也有详细的讲解和说明,今天我就想和大家来谈谈极少用到又很有用处的eol参数:
    当for /f句式中出现eol=a,就表示忽略所有以a字符打头的行,例如a.txt:
  1. ;ab c
  2. kbdj
  3. ac m
  4. ka nh
  5. bmp
复制代码
运行以下代码就会忽略显示所有以k字符打头的行:
  1. @echo off
  2. for /f "eol=k delims=" %%a in (a.txt) do echo %%a
  3. pause>nul
复制代码
for会默认忽略以;号打头的行,那么要怎么用for句式来完全显示a.txt的所有行呢?呵呵,大家可别忘记了eol,还是先来运行以下
代码:
  1. @echo off
  2. for /f "eol= delims=" %%a in (a.txt) do echo %%a
  3. pause>nul
复制代码
是不是;ab c这行的内容也被显示出来了,当eol=后面不跟任何字符的时候,for句式将会同样显示原本默认为忽略以;号打头的行。
要注意的是eol=后面要么就跟一个字符要么就置空(或空格,但空格是没有意义的),像eol=ab这样使用,程序就会报错:此时不
应有 b"。
       综上所述总结如下:
      1、"eol="将会打破for对;号打头行的默认忽略而将其显示出来
      2、"eol=a"将会忽略以a字符打头的行,但会显示以;号开头的行
      3、eol=后面只能跟一个字符或置空

[ 本帖最后由 batman 于 2009-1-11 23:40 编辑 ]
发表于 2009-1-11 23:49:55 | 显示全部楼层
学习了,谢谢
虽然本论坛不兴这个,但我还是要说,这是本人在此论坛的第一个沙发
发表于 2009-4-14 16:15:51 | 显示全部楼层
嗯!值得学习的!!!
发表于 2011-10-18 09:00:38 | 显示全部楼层
用delim=能清空空格
eol=清空默认的;开头
发表于 2011-10-19 13:53:51 | 显示全部楼层
请问楼主,如果我的文本中恰好是以双引号“开头的呢,我想忽略这一行应该怎么来弄呢?
for /f "eol=" delim=," 中有两个引号了,还能正常用吗?
发表于 2011-10-19 14:03:43 | 显示全部楼层
回复 5# coolwolf0100


你亲自测试一下不就知道是否正常啦?
发表于 2011-10-19 14:39:24 | 显示全部楼层
回复 6# Batcher
呵呵,其实我已经试了,是不行的。我刚学批处理才几天,很多东西都不懂。不知道刚才这个问题有解决的办法吗?我也是突发奇想来的
发表于 2011-10-19 17:14:14 | 显示全部楼层
回复 7# coolwolf0100


遇到问题的时候可以去代码咨询&讨论版块发帖求助
发表于 2011-10-19 17:29:00 | 显示全部楼层
或空格,但空格是没有意义的


这句话不对,空格也算是字符。
  1. @echo off
  2. for /f "delims= eol= " %%i in (1.txt) do echo %%i
  3. pause>nul
复制代码
1.txt
  1. ;ab c
  2. kbdj
  3. ac m
  4. ka nh
  5. bmp
  6. hello
复制代码
因为hello前有空格,hello没有被显示出来。
发表于 2022-9-26 14:01:19 | 显示全部楼层
回复 5# coolwolf0100
  1. FOR /F "eol=""" %%i IN (filename.md) DO ECHO %%i
复制代码
发表于 2022-11-4 20:38:59 | 显示全部楼层
谢谢楼主,学习了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:11 , Processed in 0.023363 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表