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

[文本处理] 批处理,比较两个文件并将差异写入另一个文件?

我有两个文件里面有很多重复的内容
File1.txt
1111,1111
2222,2222
3333,3333
......
File2.txt
1111,1111
2222,2222
3333,3333
4444,4444
......
两个txt有很多重复的
我想要一个只有差异的输出文件:
File3.txt
4444,4444
.....

批处理的话该怎么写,查资料 论坛的方法都试过了 都不好使
输出的新txt是空白的

本帖最后由 hfxiang 于 2022-9-23 13:42 编辑

回复 8# Esccc


   
建议用第3方工具gawk ( http://bcn.bathome.net/tool/4.1.0/gawk.exe ),简单可行
  1. gawk "x[$0]++" 1.txt
复制代码

TOP

回复 10# qixiaobin0715


   对对对 太对了  就是这个  栓Q 非常感谢

TOP

回复 4# Esccc
那是你在顶楼表达错误。如果对顺序没有特别要求的话,去重和统计重复行可以在一个批处理里解决:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('type 1.txt^|sort') do (
  4.     if not "!str!"=="%%a" (
  5.         echo,%%a>>2.txt
  6.         set n=1
  7.     ) else (
  8.         if !n! equ 1 echo,%%a>>3.txt
  9.         set n=0
  10.     )
  11.     set str=%%a
  12. )
  13. pause
复制代码
因为你没在网盘或别的地方提供测试样本,上面代码未经测试。
1

评分人数

TOP

回复 5# qixiaobin0715


    比如1.txt里是
111,111
aaa,aaa
222,222
bbb,bbb
333,333
ccc,ccc
444,444
aaa,aaa
111,111
ddd,ddd
555,555
222,222
去重复后得到2.txt
111,111
aaa,aaa
222,222
bbb,bbb
333,333
ccc,ccc
444,444
ddd,ddd
555,555
然后我想比较1.txt和2.txt剔除去的 生成一个3.txt
aaa,aaa
111,111
222,222

TOP

比如1.txt里是
111,111
aaa,aaa
222,222
bbb,bbb
333,333
ccc,ccc
444,444
aaa,aaa
111,111
ddd,ddd
555,555
222,222
去重复后得到2.txt
111,111
aaa,aaa
222,222
bbb,bbb
333,333
ccc,ccc
444,444
ddd,ddd
555,555
然后我想比较1.txt和2.txt剔除去的 生成一个3.txt
aaa,aaa
111,111
222,222

TOP

回复 5# qixiaobin0715


   
    我是1.txt里有差不多2000行重复的  去除重复以后生成2.txt 我现在是想比较这两个txt 把剔除去的行生成到3.txt里

TOP

回复 2# aloha20200628


    我是1.txt里有差不多2000行重复的  去除重复以后生成2.txt 我现在是想比较这两个txt 把剔除去的行生成到3.txt里

TOP

你把测试文件发到网盘上,让大家帮你测试,看看是哪里的问题。

TOP

回复 3# qixiaobin0715


  这个我试过了 不行

TOP

  1. findstr /xvg:File1.txt File2.txt>File3.txt
  2. findstr /xvg:File2.txt File1.txt>>File3.txt
复制代码

TOP

TOP

返回列表