|
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 |
|
|
qzwqzw
银牌会员
天的白色影子
积分 2342
发帖 635
注册 2004-3-6
状态 离线
|
|
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 来自 北京
状态 离线
|
|
2007-1-5 23:00 |
|
|
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 来自 甘肃.临泽
状态 离线
|
|
2007-1-6 01:50 |
|
|
lycai007
新手上路
积分 2
发帖 1
注册 2007-1-20
状态 离线
|
|
2007-5-2 15:22 |
|