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

[文本处理] 对比两个文本的内容,把要对比的文本中的缺的,多的文本行列出来

问题描述:现有两个文本,文本1和文本2,文本1的内容是标准内容,用文本2的内容去和文本1对比,把文本2中的缺少的行和多余的行列出来放到文本“对比结果.txt”中。要说明的是,文本1的内容中,行有重复。可能会复杂点。
现举例说明如下:
文本1内容:
005001JA00001
005001JA00002
005001JA00002
005001JA00002
005001JA00003
005001JA00004
005001JA00006
005001JA00007
005001JA00008
005001JA00010
还有许多这种格式的行。
文本2的内容如下:
005001JA00001
005001JA00002
005001JA00002
005001JA00003
005001JA00004
005001JA00005
005001JA00006
005001JA00007
005001JA00008
005001JA00010
也还有好多这种格式的行,现在文本2中就缺少了:005001JA00002这一行,多了:005001JA00005这一行,把这两行的内容写到“对比结果.txt”中即可。不知道这样的要求,批处理代码能不能实现,先谢谢。

  1. @echo off
  2. (for /f "tokens=2" %%i in ('diff.exe 1.txt 2.txt ^| findstr "^> ^<"') do (
  3.     echo,%%i
  4. ))>3.txt
复制代码
diff.exe可以在UnxUtils工具包里面找到
http://bbs.bathome.net/thread-1114-1-2.html
1

评分人数

TOP

本帖最后由 kmustwxw 于 2015-1-8 15:06 编辑

回复 2# DAIC 看到这段代码不知道说什么了,这应该是个很难的问题,没有想到,我弄了半天没能解决掉,你就这几行就完美的解决了,工具包里的这些工具的各自的功能,怎么用,没有说明吗?谢谢,太感谢 了。

TOP

回复 3# kmustwxw


那个工具包里面是常见Linux命令的Windows版本,如果熟悉Linux命令的话应该很容易上手。
如果要查看某个命令的帮助信息,可以这样:
  1. diff --help
复制代码

TOP

本帖最后由 tmplinshi 于 2015-1-8 16:06 编辑

可以用 WinMerge



发现 WinMerge 生成的“补丁”跟 diff.exe 的结果是一样的:



TOP

回复 4# DAIC 你好,DAIC,我想把两个文本的相同内容输出来,应该如何修改,把大于和小于改成等号吗??

TOP

把两个文本的相同内容输出来
  1. @echo off
  2. findstr /x /g:1.txt 2.txt >3.txt
复制代码

TOP

回复 6# kmustwxw


    不是。diff命令的作用就是查找不同的行。查找相同的行用findstr命令就行了。

TOP

返回列表