|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『楼 主』:
for按规定提取文本
实在是不知道怎么写标题了,
各位若是没好答案,帮忙想想标题也行.呵呵...
言归正传
现有a.txt和b.txt文档,里面内容(即:行数)不确定.
要求建立c.txt内容是a.txt和b.txt的全部内容
并且规律如下
先是a.txt的头5行,再是b.txt的头5行,然后又是a.txt的5行.......依此类推.........
反正就是一个5行的来,直到其中一个没有了或不足5行,就把剩下的全部写入.
不知这样说,大家听明白没???
a.txt和b.txt的行数不一定是5的倍数哦.
如a.txt内容
1
2
3
4
5
11
12
13
14
15
21
22
b.txt内容
6
7
8
9
10
16
17
18
19
20
23
24
25
26
27
要求c.txt的内容是
从1---27
[ Last edited by 26933062 on 2007-9-1 at 09:25 AM ]
|
致精致简! |
|
2007-9-1 09:23 |
|
|
xxi
初级用户
积分 48
发帖 24
注册 2007-8-31
状态 离线
|
|
2007-9-1 09:33 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
3 楼』:
Sample Text
[ Last edited by ccwan on 2007-9-1 at 02:11 PM ]
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-9-1 11:57 |
|
|
knoppix7
银牌会员
积分 1287
发帖 634
注册 2007-5-2 来自 cmd.exe
状态 离线
|
『第
4 楼』:
i didn't say anything
[ Last edited by knoppix7 on 2007-9-1 at 02:02 PM ]
|
|
2007-9-1 13:26 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
5 楼』:
Quote: | Originally posted by knoppix7 at 2007-9-1 13:26:
@echo off
type a.txt>>e.txt
type b.txt>>e.txt
findstr /v "2. 1." e.txt>>c.txt
findstr "1." e.txt|sort /+2>>c.txt
findstr "2." e.txt|sort / ... |
|
a:
sdfsdf
sdfsd
dfsd
fsdf
s
dfs
df
sdf
s
df
sd
f
sd
f
sdf
s
df
sdf
dsf
sdf
sd
f b:
123124
1
23
123
2
3
12
4
213
12
123
4
23
4
23
423
423 你的C和E结果都是type了罢了……
你是按照1,2,3……那种数字算的吧?那你写到30看看问题就有了……
他用数字是形容下。。。
|
|
2007-9-1 13:44 |
|
|
knoppix7
银牌会员
积分 1287
发帖 634
注册 2007-5-2 来自 cmd.exe
状态 离线
|
『第
6 楼』:
没弄懂LZ德意思。。。。。
当我什么都没说吧。
|
|
2007-9-1 13:58 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
7 楼』:
大家难道没看懂我的意思吗?
我的意思是
先读取a,txt的前5行,再读取b.txt的前5行
然后又读取a,txt的5行(即:第6-10行),再读取b.txt的5行(即:第6-10行)
再接着读取a.txt的5行(即:第11-15行),再读取b.txt的5行(即:第11-15行)
依此类推。。。
比如:
若a.txt的内容不足5行时,就有几行读几行,最后再把b.txt的内容全部读取。
若是b.txt的内容不足5行时,也是如此。
|
致精致简! |
|
2007-9-1 16:41 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
8 楼』:
我的代码有点复杂,所有想看看各位有什么好的解决方法。既然没人发言,我就抛砖吧。
@echo off
setlocal enabledelayedexpansion
set num=0
for /f "tokens=1 delims=:" %%i in ('findstr /n .* a.txt') do set num_=%%i
for /f "tokens=1 delims=:" %%i in ('findstr /n .* b.txt') do set _num=%%i
if %num_% gtr %_num% (set _num_=%num_%) else (set _num_=%_num%)
:begin
if %num% gtr %_num_% goto :eof
for /f %%a in ('more/e +%num% ^<a.txt') do (
set/a a+=1
if !a! leq 5 echo %%a>>c.txt
)
for /f %%i in ('more/e +%num% ^<b.txt') do (
set/a b+=1
if !b! leq 5 echo %%i>>c.txt
)
set/a num+=5
set a=0
set b=0
goto :begin [ Last edited by ccwan on 2007-9-1 at 05:07 PM ]
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-9-1 17:05 |
|
|
knoppix7
银牌会员
积分 1287
发帖 634
注册 2007-5-2 来自 cmd.exe
状态 离线
|
『第
9 楼』:
想了一下午,发现用的方法==LS的
|
|
2007-9-1 17:09 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
10 楼』:
:P
CC果然勤快……
实现当然可以,不过我是懒人嗬一看就是不是简单几句能用P搞定的问题~支持,希望LZ的问题解决。
|
|
2007-9-1 17:14 |
|
|
knoppix7
银牌会员
积分 1287
发帖 634
注册 2007-5-2 来自 cmd.exe
状态 离线
|
|
2007-9-1 17:46 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
12 楼』:
FOR循环调用的话……总运行代码不少……这个的文本固定了……
|
|
2007-9-1 17:49 |
|
|
1112yuhua
初级用户
积分 106
发帖 44
注册 2007-6-1
状态 离线
|
『第
13 楼』:
把文本文件每五行分割成一个文件,再用copy合并,不知是否可行。
|
|
2007-9-2 01:43 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
14 楼』:
多谢 ccwan 的解答,代码可以正常运行,思路也非常好,佩服!!!
不过有一个地方不明白,可以麻烦再解释一下么?
more/e +%num% ^<a.txt
这句中,为什么要^<符号?我试过取消它也可以正常运行,是不是取消以后
会在某种情况下出错?
|
致精致简! |
|
2007-9-2 12:40 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
15 楼』:
Quote: | Originally posted by 26933062 at 2007-9-2 12:40:
不过有一个地方不明白,可以麻烦再解释一下么?
more/e +%num% ^<a ... |
|
这是转义符号,你在命令行下使用没有它当然可以,但是在批处理中就要注意了。在in集合中是必须使用的。
至于不用<是可以的,只是这样用惯了
[ Last edited by ccwan on 2007-9-2 at 05:33 PM ]
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-9-2 17:28 |
|