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

批处理for命令提取文本整行内容的方法

[复制链接]
发表于 2009-4-22 14:09:34 | 显示全部楼层 |阅读模式
:: @随风 @bbs.bathome.net @2009-04-22
3楼说的对,该方法会忽略引号开头的行

for 提取文本整行内容的方法
for默认会忽略空行,若想提取空行需使用其它的命令配合,在这里不讨论。
通常我们需要提取文本整行内容时都是这么写的。
  1. for /f "delims=" %%a in (a.txt) do echo.%%a
复制代码
但是分号开头的行呢,for也会忽略掉,很多时候我们需要这些行,怎么办。
用findstr 等外部命令太麻烦,用eol 忽略一个不可见字符,不失为一个不错的办法,但始终忽略了某个字符开头的行,且获取这个不可见字符也比较麻烦。
其实有更简单的方法,就是把eol放在最后。
:
  1. @echo off
  2. rem 提取所有行,可同时配合tokens使用,但无法以空格作分割符。
  3. for /f "delims= eol=" %%a in (a.txt) do echo.%%a
  4. pause
复制代码

[ 本帖最后由 随风 于 2010-9-2 11:08 编辑 ]
发表于 2009-4-22 15:29:19 | 显示全部楼层
原来这样也可以达到效果..以前认为delims elo位置调换没有什么关系..现在发觉凡是的好好琢磨..不可下定论...随风顶你了
发表于 2009-4-24 10:24:34 | 显示全部楼层
记得namejm的帖子有总结。for /f "eol=" 会忽略以引号"开头的行。
for /f 的确有点矛盾,引号"不能作为分隔符,竟然能作为注释字符(忽略以该字符开头的行)。
 楼主| 发表于 2009-5-25 20:34:21 | 显示全部楼层

回复 3楼 的帖子

确实会忽略引号开头的行。看来这个办法不行。
发表于 2009-5-26 09:32:52 | 显示全部楼层
要不就是让eol=一个不常用到的字符 不常用到的汉字也行
for /f "delims= eol=艹" %a in (1.txt) do echo %a
上边的就是五笔打出来的一个“草字头”
发表于 2009-5-26 12:38:33 | 显示全部楼层

回复 5楼 的帖子

用楼主提到的不可见字符更好,用输入法直接打是打不出来的。
发表于 2009-5-26 21:13:39 | 显示全部楼层
eol 后面加个空格就不会忽略"和; 开头的行了,但是空格还是不行
发表于 2009-5-26 21:26:58 | 显示全部楼层
仅有[空格]或[Tab]的行是可以读出的,只是空行(没有任何字符的行)是不能读出来的,如果不用任何外部程序辅助的话。
发表于 2009-5-26 21:48:26 | 显示全部楼层
  提取文本的整行内容,还是得祭出 for+findstr /n 大法,不惧任何特殊字符,把以前的代码拉出来演示一下:
  1. @echo off
  2. cd.>output.txt
  3. for /f "delims=" %%i in ('findstr /n .* test.txt') do (
  4.         set "var=%%i"
  5.         setlocal enabledelayedexpansion
  6.         set var=!var:*:=!
  7.         (echo.!var!)>>output.txt
  8.         endlocal
  9. )
  10. start output.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 04:59 , Processed in 0.019757 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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