中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-05 17:02
48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » for按规定提取文本
可打印版本  942 / 14
第1楼 26933062 发表于 2007-09-01 09:23
银牌会员 发帖 879 积分 2,268
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 ]
第2楼 xxi 发表于 2007-09-01 09:33
初级用户 发帖 24 积分 48
请先考虑,for的运行机制
第3楼 ccwan 发表于 2007-09-01 11:57
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
Sample Text

[ Last edited by ccwan on 2007-9-1 at 02:11 PM ]
第4楼 knoppix7 发表于 2007-09-01 13:26
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
i didn't say anything

[ Last edited by knoppix7 on 2007-9-1 at 02:02 PM ]
第5楼 slore 发表于 2007-09-01 13:44
铂金会员 发帖 2,478 积分 5,212
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:


b:


你的C和E结果都是type了罢了……

你是按照1,2,3……那种数字算的吧?那你写到30看看问题就有了……
他用数字是形容下。。。
第6楼 knoppix7 发表于 2007-09-01 13:58
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
没弄懂LZ德意思。。。。。
当我什么都没说吧。
第7楼 26933062 发表于 2007-09-01 16:41
银牌会员 发帖 879 积分 2,268
大家难道没看懂我的意思吗?
我的意思是
先读取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行时,也是如此。
第8楼 ccwan 发表于 2007-09-01 17:05
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
我的代码有点复杂,所有想看看各位有什么好的解决方法。既然没人发言,我就抛砖吧。


[ Last edited by ccwan on 2007-9-1 at 05:07 PM ]
第9楼 knoppix7 发表于 2007-09-01 17:09
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
想了一下午,发现用的方法==LS的
第10楼 slore 发表于 2007-09-01 17:14
铂金会员 发帖 2,478 积分 5,212
:P
CC果然勤快……

实现当然可以,不过我是懒人嗬一看就是不是简单几句能用P搞定的问题~支持,希望LZ的问题解决。
第11楼 knoppix7 发表于 2007-09-01 17:46
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
用FOR循环。同时考虑用readline?
http://www.cn-dos.net/forum/viewthread.php?tid=28639&fpage=1
第12楼 slore 发表于 2007-09-01 17:49
铂金会员 发帖 2,478 积分 5,212
FOR循环调用的话……总运行代码不少……这个的文本固定了……
第13楼 1112yuhua 发表于 2007-09-02 01:43
初级用户 发帖 44 积分 106
把文本文件每五行分割成一个文件,再用copy合并,不知是否可行。
第14楼 26933062 发表于 2007-09-02 12:40
银牌会员 发帖 879 积分 2,268
多谢 ccwan 的解答,代码可以正常运行,思路也非常好,佩服!!!
不过有一个地方不明白,可以麻烦再解释一下么?
more/e +%num% ^<a.txt
这句中,为什么要^<符号?我试过取消它也可以正常运行,是不是取消以后
会在某种情况下出错?
第15楼 ccwan 发表于 2007-09-02 17:28
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
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 ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023