如何用 批处理 根据文本中 特定 的字符 将文本分段输出新的多个文本

原a.txtinta=1,objobj=obj+1intobj0[][]={{3,-3,-23},{55,-3,-26789},{abc+5{cd}}};intobj1[... 原 a.txt

int a=1,obj
obj=obj+1

int obj0[][]={{3,-3,-23},
{55,-3,-26789},
{abc+5{cd}}};

int obj1[][]={{656,-77,-253};
{{asc+7{sf}}};

int s=n;

int obj2[][]={{2654,477,453};
{{asb+8{s90}}
{656,-77,-253}};
……
……
……

原文本中不定有多少行,但有几个特殊行行首是
int obj0[][]={{
int obj1[][]={{
int obj2[][]={{
……
……

是否可以用批处理根据特殊的行首把原文本分段后生成N个新文本
需要生成的多个文件为:

b.txt 内容为
int a=1,obj
obj=obj+1

b0.txt内容为
int obj0[][]={{3,-3,-23},
{55,-3,-26789},
{abc+5{cd}}};

b1.txt内容为
int obj1[][]={{656,-77,-253};
{{asc+7{sf}}};

int s=n;

b2.txt内容为
int obj2[][]={{2654,477,453};
{{asb+8{s90}}
{656,-77,-253}};

以此类推,请各位大侠指点!先谢谢了!
谢谢1楼的热心解答,不过,整个文本有几千行,要考虑下运行效率
展开
 我来答
yyykkkyyyy
2011-06-13 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3269万
展开全部
试一下满足要求不?要保证所在目录里原来不存在b.txt b0.txt b1.txt...等,跟你把空行去掉了,如要保持空行,把代码里的if not "%%b"=="" 去掉
@echo off&title .
setlocal enabledelayedexpansion
set f=a.txt
echo/&echo 正在查找特征行...
for /f "delims=:" %%a in ('findstr/inc:"int obj" "%f%"')do set ln%%a=y
for /f "tokens=1* delims=:" %%a in (
'findstr/n ".*" "%f%"')do if not "%%b"=="" (
cls&echo/&echo 正在写入文件 b!n!.txt
if defined ln%%a (if defined n (set/a n+=1)else set/a n=0)
echo.%%b>>b!n!.txt)
echo/&echo Ok 完成
ping 127.1>nul
追问
基本满足了,效率也很高,不过如何实现覆盖原来生成的b.txt b0.txt等文件呢,或者先执行删除也行,该怎么写?
追答
那就先删吧,如果确定文件夹里不存在还需要保留的b开头的后缀为txt的文件,在第二行到第五行之间任意插一行:del /q b*.txt
要是这也不能确定,那就改为 (那个1000改为不小于将要产生文件的序号):
del b.txt&for /L %%i in (0,1,1000)do if exist b%%i.txt (
cls& echo 正在清除文件 b%%i.txt
del b%%i.txt)
匿名用户
2011-06-13
展开全部
@echo off&setlocal enabledelayedexpansion
set b=0
for /f "tokens=* delims=" %%a in (a.txt) do (

echo,%%a|find /i "int obj"&&set /a b+=1
echo,%%a>>b!b!.txt

)
ping -n 3 127.1>nul
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式