中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 04:30
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]关于提取文本的特定内容 查看 756 回复 7
楼 主 [求助]关于提取文本的特定内容 发表于 2008-04-16 18:03 ·  中国 江苏 南京 建邺区 电信
初级用户
积分 60
发帖 29
注册 2007-04-28 22:37
19年会员
UID 86809
性别 男
状态 离线
有一个文本a.txt内有字符串,随机每行一个排列,如:
567031853----02587410
346071854----04723060
978081855----09665771
............................
763301856----05615379
673501857----59152301
563701858----76464193
456501859----55819080


求助如下:新建个文本b.txt,把我随机需要的字符串保存在b.txt,如:
563701858
978081855
763301856

先求个批处理,对比2个文本,按照b.txt的内容在a.txt中提取出来保存为c.txt,并把a.txt中所提取的内容删除并保存.

谢谢
2 这不是猜谜语: 发表于 2008-04-16 18:17 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
请先把你的问题讲清楚再求助,随机需要是什么意思,同是请把b.txt贴出来
批处理之家新域名:www.bathome.net
3 发表于 2008-04-16 18:20 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
未测试。。
建议:先备份再测试。。。
:

@echo off
findstr /ig:b.txt a.txt>c.txt
findstr /ivg:b.txt a.txt>d.txt
del/q a.txt
ren d.txt a.txt
致精致简!
4 发表于 2008-04-16 18:42 ·  中国 江苏 南京 电信
初级用户
积分 60
发帖 29
注册 2007-04-28 22:37
19年会员
UID 86809
性别 男
状态 离线
Originally posted by zw19750516 at 2008-4-16 06:17 PM:
请先把你的问题讲清楚再求助,随机需要是什么意思,同是请把b.txt贴出来

不好意思,看来我表达有问题,随机需要是指不是按排序来的,比如我现在想提取a.txt中的
346071854----04723060
456501859----55819080
673501857----59152301

我想有个批处理,只要我把上面想提取的保存在b.txt中,比如
346071854
456501859
673501857

运行批处理,a.txt和b.txt对比,把符合b.txt中的字符串按每行提取到c.txt中,如
346071854----04723060
456501859----55819080
673501857----59152301

然后再把已提取出来的字符串从a.txt中删除

表达能力有限,不知道各位高手能不能看懂
5 发表于 2008-04-16 18:49 ·  中国 江苏 南京 电信
初级用户
积分 60
发帖 29
注册 2007-04-28 22:37
19年会员
UID 86809
性别 男
状态 离线
Originally posted by 26933062 at 2008-4-16 06:20 PM:
未测试。。
建议:先备份再测试。。。
:

@echo off
findstr /ig:b.txt a.txt>c.txt
findstr /ivg:b.txt a.txt>d.txt
del/q a.txt
ren d.txt a.txt

谢谢,测试可以
6 发表于 2008-04-16 18:52 ·  中国 江苏 南京 电信
初级用户
积分 60
发帖 29
注册 2007-04-28 22:37
19年会员
UID 86809
性别 男
状态 离线
Originally posted by 26933062 at 2008-4-16 06:20 PM:
未测试。。
建议:先备份再测试。。。
:

@echo off
findstr /ig:b.txt a.txt>c.txt 把所需的提取到c
findstr /ivg:b.txt a.txt>d.txt 剩下的提取到d
del/q a.txt 删除a
ren d.txt a.txt 重命名d为a


是不是这样啊?
7 理解是对的: 发表于 2008-04-16 19:52 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
呵呵,你表达不行,理解还可以,同时说明下:findstr /v 是指只打印不匹配的行,而findstr /i是指不区分大小写(findstr默认是区分大小写的),findstr /g:是从文件获取搜索的字符串。
批处理之家新域名:www.bathome.net
8 发表于 2008-04-16 20:21 ·  中国 江苏 南京 电信
初级用户
积分 60
发帖 29
注册 2007-04-28 22:37
19年会员
UID 86809
性别 男
状态 离线
Originally posted by zw19750516 at 2008-4-16 07:52 PM:
呵呵,你表达不行,理解还可以,同时说明下:findstr /v 是指只打印不匹配的行,而findstr /i是指不区分大小写(findstr默认是区分大小写的),findstr /g:是从文件获取搜索的字符串。


呵呵,没办法,不怎么懂,不过大概意思还明白点
论坛跳转: