标题: [文本处理] [已解决]批处理怎样按姓名列表,到另一个文件找到完全一样的保存起来 [打印本页]
作者: gcbgczhang 时间: 2020-11-20 16:55 标题: [已解决]批处理怎样按姓名列表,到另一个文件找到完全一样的保存起来
本帖最后由 gcbgczhang 于 2021-7-31 14:20 编辑
想请教一下各位老师,写一个bat
aaa.txt内容
王新然
邹天悦
王君
王新然
bbb.txt内容
王新然
邹天悦
王君
王君泽
王君如
想实现的:如果aaa.txt中的名字在bbb.txt中存在,将存在的保存到ccc.txt中
作者: ivor 时间: 2020-11-20 17:27
- findstr /r /g:aaa.txt bbb.txt>ccc.txt
复制代码
作者: qixiaobin0715 时间: 2020-11-20 17:31
回复 2# ivor
findstr够强大,原来参数/G:file是这么用的。又学了一招。
作者: Batcher 时间: 2020-11-20 17:58
回复 2# ivor
看楼主的要求应该是反过来这样吧:- findstr /r /g:bbb.txt aaa.txt>ccc.txt
复制代码
作者: qixiaobin0715 时间: 2020-11-20 19:25
回复 4# Batcher
好像关键不在于谁前谁后的问题,比如放在前面的文本中有“王君”,后面文本所有“王君*”都会输出。应当加上参数“/be”才对。
作者: ivor 时间: 2020-11-20 19:28
回复 5# qixiaobin0715
这样就正确了,你要的只是交集- findstr /r /x /g:aaa.txt bbb.txt
复制代码
作者: Batcher 时间: 2020-11-20 21:36
回复 2# ivor
aaa.txt内容改成这样就会发现顺序不同结果不同
王新
邹天悦
王君
王新然
作者: gcbgczhang 时间: 2020-11-21 10:20
回复 5# qixiaobin0715
是的,如果每行的字符有包含关系,都会输出。我要的是王新就输出王新,不要王新然
作者: qixiaobin0715 时间: 2020-11-21 10:41
6楼代码正解,参数/be和/x在这里应当没什么不同。
作者: gcbgczhang 时间: 2020-11-21 11:09
回复 6# ivor
谢谢,老师,你这个可以实现我上面的。那么现在有一个另一个问题,就是通过索引在库里找出全文件内容。
aaa.txt内容,这个是索引内容。
王新
刘东
马黑黑
王新新
bbb.txt内容。这个是库内容,
王新新 8岁 学生
马黑黑 10岁 学生
王新新 9岁 学生
王新 11岁 学生
……………………………………。
我要按aaa的名字,在bbb中找出来,输出来和bbb一样的格式。
我用for, 找出来,王新会输出bbb中王新和王新新的信息,只能将输出来的再用您的命令再对比一下就可以唯一匹配呢
我用这个
for /f "delims=*" %%i in (aaa.txt) do findstr "%%i" bbb.txt >>ccc.txt
findstr /r /x /g:ccc.txt bbb.txt >77.txt
ccc.txt出来
王新新 8岁 学生
王新新 9岁 学生
王新 11岁 学生马黑黑 10岁 学生
王新新 8岁 学生
王新新 9岁 学生
……。…。…。…。……
为什么马黑黑和王新一同一行了?
作者: qixiaobin0715 时间: 2020-11-21 11:57
aaa.txt文件姓名列表行首行尾不要有空格,bbb.txt库文件姓名和年龄之间最少有一个空格。- @echo off
- setlocal enabledelayedexpansion
- (for /f %%a in (aaa.txt) do (
- findstr /c:"%%a " bbb.txt
- ))>ccc.txt
- pause
复制代码
作者: gcbgczhang 时间: 2020-11-21 12:42
回复 11# qixiaobin0715
确实是有空格的问题,上面的列表是我自己打的,我用电子表格处理一下,再弄就好了。
@echo off
setlocal enabledelayedexpansion
(for /f %%a in (aaa.txt) do (
findstr /c:"%%a" bbb.txt
))>ccc.txt
findstr /r /x /g:ccc.txt bbb.txt >77.txt
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |