[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何提取两特定字符串间的多行字符?

请都各位朋友,我想提取两个特定字符所有行的中间多行字符,

例如,文件如下:
asdfasdf
asdf
asdfasdfasdf
AAAAAA dfasfsdfs  #有用信息,开始
AAAAAA dfasfsdfs
AAAAAA dfasfsdfs
asdfsadfsd
asdfasdf
BBBBB asdfasfsdsf
BBBBB asdfasfsdsf #有用信息,结束
asdfasdf
asdf
asdf

请问:如何提取上面红色字体间的内容?

补充说明:希望通过纯bat实现,不考虑借助sed/grep等实现.

问题已解决,详见7楼yangfengoo的代码,再次感谢!

[ 本帖最后由 AYOU 于 2010-4-4 22:14 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

就不能把问题说具体点吗?

TOP

楼主你到底要提取哪个部分的内容?
光给颜色看,不做任何文字说明
试问谁能看得懂?
为了不让帮你的人做无用功
请在顶楼精确描述你的问题
否则,没人会做活雷锋。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

根本看不出任何的规律

TOP

原帖由 namejm 于 2010-4-4 18:31 发表
楼主你到底要提取哪个部分的内容?
光给颜色看,不做任何文字说明
试问谁能看得懂?
为了不让帮你的人做无用功
请在顶楼精确描述你的问题
否则,没人会做活雷锋。


之前编辑时太粗心了,有部分说明文件弄丢了,已经修改过来了

TOP

红色BBBBB和它上一行黑色BBBBB如何确定谁才是结束字符,只怕没人知道。楼主太吝啬文字了。

TOP

  1. @echo off
  2. for /f "delims=:" %%a in ('findstr /n "AAAAA BBBBB" a.txt') do if not defined x1 (set x1=%%a) else (set x2=%%a)
  3. for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do if %%a geq %x1% if %%a leq %x2% echo.%%b
  4. pause
复制代码
2

评分人数

TOP

原帖由 FOR 于 2010-4-4 20:13 发表
红色BBBBB和它上一行黑色BBBBB如何确定谁才是结束字符,只怕没人知道。楼主太吝啬文字了。


你好!由于文件中有很多行都含有BBBB字样,因此只能自己判断取最开始出现的AAAA和最后出现的BBBB了.

TOP

原帖由 yangfengoo 于 2010-4-4 20:18 发表
@echo off
for /f "delims=:" %%a in ('findstr /n "AAAAA BBBBB" a.txt') do if not defined x1 (set x1=%%a) else (set x2=%%a)
for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do if %%a geq %x1 ...


谢谢yangfengoo,代码测试通过.
另外有个地方不是太明白,就是最后那个echo.%%b",echo后面那个"."作什么用,还有那个%%b变量又是取自哪里,貌似换成其它如%%c之类的就不行了.

[ 本帖最后由 AYOU 于 2010-4-4 21:20 编辑 ]

TOP

回复 9楼 的帖子

把这个帖子仔细读一遍:
http://bbs.bathome.net/thread-939-1-1.html

TOP

问题解决了.谢谢楼上各位!

TOP

返回列表