找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32410|回复: 11

[文本处理] [已解决]批处理怎样按姓名列表,到另一个文件找到完全一样的保存起来

[复制链接]
发表于 2020-11-20 16:55:28 | 显示全部楼层 |阅读模式
本帖最后由 gcbgczhang 于 2021-7-31 14:20 编辑

想请教一下各位老师,写一个bat
aaa.txt内容
王新然
邹天悦
王君
王新然
bbb.txt内容
王新然
邹天悦
王君
王君泽
王君如
想实现的:如果aaa.txt中的名字在bbb.txt中存在,将存在的保存到ccc.txt中
发表于 2020-11-20 17:27:46 | 显示全部楼层
  1. findstr /r /g:aaa.txt bbb.txt>ccc.txt
复制代码
发表于 2020-11-20 17:31:59 | 显示全部楼层
回复 2# ivor

findstr够强大,原来参数/G:file是这么用的。又学了一招。
发表于 2020-11-20 17:58:41 | 显示全部楼层
回复 2# ivor


看楼主的要求应该是反过来这样吧:
  1. findstr /r /g:bbb.txt aaa.txt>ccc.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
ivor + 1 结果都一样

查看全部评分

发表于 2020-11-20 19:25:21 | 显示全部楼层
回复 4# Batcher
好像关键不在于谁前谁后的问题,比如放在前面的文本中有“王君”,后面文本所有“王君*”都会输出。应当加上参数“/be”才对。
发表于 2020-11-20 19:28:40 | 显示全部楼层
回复 5# qixiaobin0715


    这样就正确了,你要的只是交集
  1. findstr /r /x /g:aaa.txt bbb.txt
复制代码
发表于 2020-11-20 21:36:26 | 显示全部楼层
回复 2# ivor


aaa.txt内容改成这样就会发现顺序不同结果不同
王新
邹天悦
王君
王新然
 楼主| 发表于 2020-11-21 10:20:41 | 显示全部楼层
回复 5# qixiaobin0715


    是的,如果每行的字符有包含关系,都会输出。我要的是王新就输出王新,不要王新然
发表于 2020-11-21 10:41:17 | 显示全部楼层
6楼代码正解,参数/be和/x在这里应当没什么不同。
 楼主| 发表于 2020-11-21 11:09:31 | 显示全部楼层
回复 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岁 学生
……。…。…。…。……
为什么马黑黑和王新一同一行了?
发表于 2020-11-21 11:57:10 | 显示全部楼层
aaa.txt文件姓名列表行首行尾不要有空格,bbb.txt库文件姓名和年龄之间最少有一个空格。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f %%a in (aaa.txt) do (
  4.     findstr /c:"%%a " bbb.txt
  5. ))>ccc.txt
  6. pause
复制代码
 楼主| 发表于 2020-11-21 12:42:22 | 显示全部楼层
回复 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 20:53 , Processed in 0.035288 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表