标题: 批处理for命令提取文本整行内容的方法 [打印本页]
作者: 随风 时间: 2009-4-22 14:09 标题: 批处理for命令提取文本整行内容的方法
:: @随风 @bbs.bathome.net @2009-04-22
3楼说的对,该方法会忽略引号开头的行
for 提取文本整行内容的方法
for默认会忽略空行,若想提取空行需使用其它的命令配合,在这里不讨论。
通常我们需要提取文本整行内容时都是这么写的。- for /f "delims=" %%a in (a.txt) do echo.%%a
复制代码
但是分号开头的行呢,for也会忽略掉,很多时候我们需要这些行,怎么办。
用findstr 等外部命令太麻烦,用eol 忽略一个不可见字符,不失为一个不错的办法,但始终忽略了某个字符开头的行,且获取这个不可见字符也比较麻烦。
其实有更简单的方法,就是把eol放在最后。
:- @echo off
- rem 提取所有行,可同时配合tokens使用,但无法以空格作分割符。
- for /f "delims= eol=" %%a in (a.txt) do echo.%%a
- pause
复制代码
[ 本帖最后由 随风 于 2010-9-2 11:08 编辑 ]
作者: woxingwoshu007 时间: 2009-4-22 15:29
原来这样也可以达到效果..以前认为delims elo位置调换没有什么关系..现在发觉凡是的好好琢磨..不可下定论...随风顶你了
作者: zqz0012005 时间: 2009-4-24 10:24
记得namejm的帖子有总结。for /f "eol=" 会忽略以引号"开头的行。
for /f 的确有点矛盾,引号"不能作为分隔符,竟然能作为注释字符(忽略以该字符开头的行)。
作者: 随风 时间: 2009-5-25 20:34 标题: 回复 3楼 的帖子
确实会忽略引号开头的行。看来这个办法不行。
作者: stuqx 时间: 2009-5-26 09:32
要不就是让eol=一个不常用到的字符 不常用到的汉字也行
for /f "delims= eol=艹" %a in (1.txt) do echo %a
上边的就是五笔打出来的一个“草字头”
作者: Batcher 时间: 2009-5-26 12:38 标题: 回复 5楼 的帖子
用楼主提到的不可见字符更好,用输入法直接打是打不出来的。
作者: zhangxu712 时间: 2009-5-26 21:13
eol 后面加个空格就不会忽略"和; 开头的行了,但是空格还是不行
作者: netbenton 时间: 2009-5-26 21:26
仅有[空格]或[Tab]的行是可以读出的,只是空行(没有任何字符的行)是不能读出来的,如果不用任何外部程序辅助的话。
作者: namejm 时间: 2009-5-26 21:48
提取文本的整行内容,还是得祭出 for+findstr /n 大法,不惧任何特殊字符,把以前的代码拉出来演示一下:- @echo off
- cd.>output.txt
- for /f "delims=" %%i in ('findstr /n .* test.txt') do (
- set "var=%%i"
- setlocal enabledelayedexpansion
- set var=!var:*:=!
- (echo.!var!)>>output.txt
- endlocal
- )
- start output.txt
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |