中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何从一个文本文件拆分为多个文本文件?
« [1] [2] »
作者:
标题: 如何从一个文本文件拆分为多个文本文件? 上一主题 | 下一主题
zhaoxf
初级用户




积分 118
发帖 7
注册 2004-3-27
状态 离线
『楼 主』:  如何从一个文本文件拆分为多个文本文件?

原文件(test.txt):
**BEGIN FILE1 (注释:**BENGIN为标志,表示要从此处拆分;FILE1为拆分文件名)
aaaaaaaa  ccc
bbbbbbbb cvcv
cccccccc  cvcv
dddddddd  tytyty
**END
**BEGIN FILE2(注释:**BENGIN为标志,表示要从此处拆分;FILE2为拆分文件名)
ggggggggggg gggg
hhhhhhhhh  yyyyy
iiiiiiiiii          tyty
**END
**BEGIN FILE3(注释:**BENGIN为标志,表示要从此处拆分;FILE3为要分文件名)
kdsfhkasdfh  tyu
dfsdfsdfsdf  tyu utyu
sdfsdfsdfadf  667676
**END

此时,需要根据**BEGIN来拆分为多个文本文件,**BENIN后面的FILE1/FILE2/FILE3等为文件名:

文件FILE1:
**BEGIN FILE1
aaaaaaaa  ccc
bbbbbbbb cvcv
cccccccc  cvcv
dddddddd  tytyty
**END

文件FILE2:
**BEGIN FILE2
ggggggggggg gggg
hhhhhhhhh  yyyyy
iiiiiiiiii          tyty
**END

文件3:
**BEGIN FILE3
kdsfhkasdfh  tyu
dfsdfsdfsdf  tyu utyu
sdfsdfsdfadf  667676
**END

[ Last edited by zhaoxf on 2007-1-5 at 11:38 AM ]

2007-1-5 10:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 2 楼』:  

  带星号的那些行是原文件里本来就有的吗?你所举的例子太过抽象,如果不介意,请发一段真正内容出来,并在适当的地方加上注释,说明意图,以便于构思代码。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-5 10:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zhaoxf
初级用户




积分 118
发帖 7
注册 2004-3-27
状态 离线
『第 3 楼』:  

原文件(test.txt):
**BEGIN FILE1 (注释:**BENGIN为标志,表示要从此处拆分;FILE1为要拆分出的文件名)
aaaaaaaa  ccc
bbbbbbbb cvcv
cccccccc  cvcv
dddddddd  tytyty
**END
**BEGIN FILE2(注释:**BENGIN为标志,表示要从此处拆分;FILE2为要拆分出的文件名)
ggggggggggg gggg
hhhhhhhhh  yyyyy
iiiiiiiiii          tyty
**END
**BEGIN FILE3(注释:**BENGIN为标志,表示要从此处拆分;FILE3为要拆分出的文件名)
kdsfhkasdfh  tyu
dfsdfsdfsdf  tyu utyu
sdfsdfsdfadf  667676
**END


感谢斑竹.

[ Last edited by zhaoxf on 2007-1-5 at 11:36 AM ]

2007-1-5 10:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhaoxf
初级用户




积分 118
发帖 7
注册 2004-3-27
状态 离线
『第 4 楼』:  

**BEGIN和**END 在原文件都有.

2007-1-5 10:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhaoxf
初级用户




积分 118
发帖 7
注册 2004-3-27
状态 离线
『第 5 楼』:  

付上我写的bat文件,可是有个很严重的问题,就是只能产生FILE1/FILE2/FILE3等文件,可是里面没有内容:

for /f "tokens=1, 2, 3, 4 delims=** " %%j in (test.txt) do (
    if "%%j" == "BEGIN" ( >> "%%k" echo
     )
)

2007-1-5 11:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhaoxf
初级用户




积分 118
发帖 7
注册 2004-3-27
状态 离线
『第 6 楼』:  

付上原文件和我写的BAT:

附件 1: test.zip (2007-1-5 11:05, 397 bytes, 下载附件所需积分 1 点 ,下载次数: 34)
2007-1-5 11:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 7 楼』:  

这样试试:
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%i in (spil.txt) do (
        set tmp=%%i
        if "!tmp:~0,7!" == "**BEGIN" (
                set file=!tmp:*BEGIN =!
                echo %%i>!file!
        ) else (
                echo %%i>>!file!
        )
)


   此帖被 +11 点积分      点击查看详情   
评分人:【 lxmxn 分数: +4  时间:2007-1-5 13:09
评分人:【 zhaoxf 分数: +2  时间:2007-1-5 20:57
评分人:【 ccwan 分数: +5  时间:2007-1-6 00:55




  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2007-1-5 11:54
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 8 楼』:  

到这里看看吧

http://www.cn-dos.net/forum/view ... t=csplit&page=2

2007-1-5 12:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tigerpower
中级用户

大师兄


积分 377
发帖 99
注册 2005-8-26
状态 离线
『第 9 楼』:  

如文件名形如 !FILE1! ,!FILE2!,!FILE3!,则7楼代码需要打补丁:)

2007-1-5 13:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zhaoxf
初级用户




积分 118
发帖 7
注册 2004-3-27
状态 离线
『第 10 楼』:  

感谢各位热心高人的指点。
感谢"无奈何"的源码提供。跑出来的结果完全成功!

感谢中国DOS联盟提供这样的热情论坛!

2007-1-5 20:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 11 楼』:  

顺便提供另外一种方法,纯属灌水
@echo off&setlocal
for /f "tokens=1*" %%a in (fi.txt) do call :pp "%%a" "%%b"
goto :eof
:pp
if /i %1 equ "**BEGIN" (
>>%~2.txt echo %~1 %~2&set a=%~2.txt
) else (
>>%a% echo %~1 %~2
)
goto :eof


   此帖被 +9 点积分     点击查看详情   
评分人:【 lxmxn 分数: +4  时间:2007-1-5 23:29
评分人:【 ccwan 分数: +5  时间:2007-1-6 00:55




我今后在论坛的目标就是做个超级坏人!!!
2007-1-5 23:00
查看资料  发短消息 网志  OICQ (329429)  编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 12 楼』:  

我也来灌水
set fso=createobject("scripting.filesystemobject")
set file=fso.opentextfile("a.txt",1)
do while file.AtEndOfStream <> True
m=file.readline
if left(m,12)="**BEGIN FILE" then
set cfile=fso.createtextfile(right(m,5),true)
end if
cfile.writeline m
loop
file.close


   此帖被 +9 点积分     点击查看详情   
评分人:【 lxmxn 分数: +4  时间:2007-1-6 00:14
评分人:【 ccwan 分数: +5  时间:2007-1-6 00:55


2007-1-5 23:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 13 楼』:  

作为对无奈何、9527、jmz573515三人灌水的惩罚,每人加5分。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-1-6 00:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 14 楼』:  

sed 解决还是不错的

2007-1-6 01:50
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
lycai007
新手上路





积分 2
发帖 1
注册 2007-1-20
状态 离线
『第 15 楼』:  如何从一个文本文件拆分为多个文本文件?

给可以发个例子和。BAT文件给我,谢谢了,ljchenghui@163.com

2007-5-2 15:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: