标题: 如何从一个文本文件拆分为多个文本文件?
[打印本页]
作者: zhaoxf
时间: 2007-1-5 10:49
标题: 如何从一个文本文件拆分为多个文本文件?
原文件(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 ]
作者: namejm
时间: 2007-1-5 10:56
带星号的那些行是原文件里本来就有的吗?你所举的例子太过抽象,如果不介意,请发一段真正内容出来,并在适当的地方加上注释,说明意图,以便于构思代码。
作者: zhaoxf
时间: 2007-1-5 10:58
原文件(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 ]
作者: zhaoxf
时间: 2007-1-5 10:59
**BEGIN和**END 在原文件都有.
作者: zhaoxf
时间: 2007-1-5 11:02
付上我写的bat文件,可是有个很严重的问题,就是只能产生FILE1/FILE2/FILE3等文件,可是里面没有内容:
for /f "tokens=1, 2, 3, 4 delims=** " %%j in (test.txt) do (
if "%%j" == "BEGIN" ( >> "%%k" echo
)
)
作者: zhaoxf
时间: 2007-1-5 11:05
付上原文件和我写的BAT:
附件
1:
test.zip (2007-1-5 11:05, 397 bytes, 下载附件所需积分 1点
,下载次数: 34)
作者: 无奈何
时间: 2007-1-5 11:54
这样试试:
@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!
)
)
作者: qzwqzw
时间: 2007-1-5 12:29
到这里看看吧
http://www.cn-dos.net/forum/view ... t=csplit&page=2
作者: tigerpower
时间: 2007-1-5 13:18
如文件名形如 !FILE1! ,!FILE2!,!FILE3!,则7楼代码需要打补丁:)
作者: zhaoxf
时间: 2007-1-5 20:53
感谢各位热心高人的指点。
感谢"无奈何"的源码提供。跑出来的结果完全成功!
感谢中国DOS联盟提供这样的热情论坛!
作者: 9527
时间: 2007-1-5 23:00
顺便提供另外一种方法,纯属灌水
@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
作者: jmz573515
时间: 2007-1-5 23:56
我也来灌水
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
作者: ccwan
时间: 2007-1-6 00:56
作为对无奈何、9527、jmz573515三人灌水的惩罚,每人加5分。
作者: vkill
时间: 2007-1-6 01:50
sed 解决还是不错的
作者: lycai007
时间: 2007-5-2 15:22
标题: 如何从一个文本文件拆分为多个文本文件?
给可以发个例子和。BAT文件给我,谢谢了,
ljchenghui@163.com
作者: fhtest
时间: 2007-11-21 16:52
标题: hao
好帖,谢谢楼主
作者: hongshi18
时间: 2009-1-29 11:00
标题: 标题: 如何从一个文本文件拆分为多个文本文件?
感谢中国DOS联盟
作者: cuihao1986
时间: 2009-7-6 20:38
不错!
作者: cuihao1986
时间: 2009-7-6 23:39
你好,我运行你写的程序
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
为什么会提示“此时不应有(”
不好意思,请教一下原因。谢谢。