[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已完成]批处理怎样找出A文件中每行内容在B文件中找不到的?

本帖最后由 gcbgczhang 于 2021-7-31 22:44 编辑

各位老师好。
找出a.txt中在b.txt中不存在的行,输出到c.txt
两文件都有10万行以上,用什么方法最快呀,我搞的太慢了。
a.txt内容

211203196802142025
211203196612102081
211203198612202057
410401198411240027
...
b.txt内容
211203198612202057
211281201009062014
410401198411240027
211203196410162019
...
要得到c.txt,内容为
211203196802142025
211203196612102081

回复 1# gcbgczhang


    请把你搞的发出来看一下
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

遍历一百亿次以上,这个每秒一千多万也要近二十分钟
@echo off
(for /f "delims=" %%a in (a.txt) do findstr "%%a" b.txt>nul||echo %%a)>c.txt
pause

TOP

回复 1# gcbgczhang
如果文本像你提供的那样
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%b in (b.txt) do set #%%b=true
  4. (for /f %%a in (a.txt) do if not defined #%%a echo,%%a)>c.txt
  5. pause
复制代码
1

评分人数

    • idwma: 这个是真快呀,可以讲讲原理吗,看不懂技术 + 1

TOP

谢谢楼上的老师,不知道灰什么不能一个个回复。我现在有新的问题,就是用导出来的列表到库里匹配全信息输出来,天,太慢了。
@echo off
setlocal enabledelayedexpansion
(for /f %%a in (列表.txt) do (
    findstr /c:"%%a" 全信息.csv
))>nnccc.txt

列表内容就是这些身份证,而全信息其中一列包含身份证

TOP

老师,我用的这个,我自己搞的这个,文件小了感觉不出来,文件一大就抓狂。
@echo off
for /f "delims=*" %%i in (a.txt) do  findstr %%i b.txt || echo %%i>>c.txt

TOP

回复 3# idwma


    老师,你这个和我搞的一样啊…………。

TOP

回复 2# Batcher


    老师,我回复到楼下了,这个花时间弄完了,我用了findstr和for.

TOP

回复 7# gcbgczhang


   下次你可以用4楼那个方法,判断变量定义速度是真快

TOP

回复 1# gcbgczhang


试试这样速度如何:
  1. findstr /v /l /g:b.txt a.txt > c.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# Batcher


    2秒完成…….唉!!郁闷...我感觉也是用这个能比较,但看不明白参数没去实践.

TOP

文件比较命令 fc
  1. fc a.txt b.txt
复制代码

TOP

返回列表