Board logo

标题: [文本处理] 批处理如何把两个文本文档里相同的内容去掉? [打印本页]

作者: jonm    时间: 2012-6-18 20:54     标题: 批处理如何把两个文本文档里相同的内容去掉?

请教各高朋友
如何把B文本文档里和A文本文档里相同的内容去掉

如:
A文本文档:
1234
2345
4324
B文本文档:
2348
9876
7658
6540
1234
2345
生成C文本文档
2348
9876
7658
6540

请大家帮助,谢谢
作者: weichenxiehou    时间: 2012-6-18 21:29

如果b.txt为大文件,只保留b.txt剩下的部分:
  1. findstr /vix /g:a.txt b.txt>c.txt
复制代码
如果a.txt为大文件,只保留a.txt剩下的部分:
  1. findstr /vix /g:b.txt a.txt>c.txt
复制代码
如果两者的不同部分均保留:
  1. findstr /vix /g:a.txt b.txt>c.txt
  2. findstr /vix /g:b.txt a.txt>>c.txt
复制代码

作者: poter    时间: 2012-6-18 21:32

用findstr会更简单,用循环效率不高

@echo off
setlocal enableDelayedExpansion
for /f "tokens=*" %%i in (b.txt) do (
        for /f "tokens=*" %%j in (a.txt) do (
                if not "%%i"=="%%j" set /a a+=1
                if "!a!"=="3" echo %%i
        )
        set a=
)
作者: jonm    时间: 2012-6-18 22:57

非常谢谢,我先试试
作者: jonm    时间: 2012-6-18 23:05

请问二位大大
这个要怎么用
不是用的批处理吗
作者: jonm    时间: 2012-6-18 23:06

回复 3# poter
你好,这个是怎么用,
不是生成批处理文件吗
请指导,谢谢
作者: jonm    时间: 2012-6-18 23:17

请大大们指导
作者: forfiles    时间: 2012-6-18 23:32

回复 5# jonm


    是用的批处理
作者: jonm    时间: 2012-6-19 00:51

回复 3# poter
你好,我把你的代码另存为BAT格式,再在同一文件夹里建工a  和 b二个文本.填上内容后,再启动批处理,没出现什么结果啊,请再指导,谢谢
作者: jonm    时间: 2012-6-19 07:09

请指导,谢谢
作者: jonm    时间: 2012-6-19 18:50

请高手指导,谢谢
作者: forfiles    时间: 2012-6-19 19:18

回复 9# jonm


在最后增加一行:
pause
作者: jonm    时间: 2012-6-19 20:00

回复 3# poter


    你好,对不起,还是要打扰你
我加了后,没有产生对比,没有生C 文本
能加一下你的QQ指导我行吗,谢谢
作者: powerbat    时间: 2012-6-19 20:14

回复 13# jonm


    莫非楼主以为2楼的代码不是批处理?
作者: forfiles    时间: 2012-6-19 20:15

回复 13# jonm
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. (for /f "tokens=*" %%i in (b.txt) do (
  4.     for /f "tokens=*" %%j in (a.txt) do (
  5.         if not "%%i"=="%%j" set /a a+=1
  6.         if "!a!"=="3" echo %%i
  7.     )
  8.     set a=
  9. ))>c.txt
复制代码

作者: poter    时间: 2012-6-20 21:28

不好意思,其实这个批处理的作用很有限的,如果文本有多列,它就不管用了。

而且如果a文本不止三行,还要先判定一个行数。

楼主最好把你的文本完完整整的贴出来,这样别人才能根据你的情况来解决




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2