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

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

[复制链接]
发表于 2015-1-8 12:01:39 | 显示全部楼层 |阅读模式
问题描述:现有两个文本,文本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”中即可。不知道这样的要求,批处理代码能不能实现,先谢谢。
发表于 2015-1-8 13:14:29 | 显示全部楼层
  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技术 +1 收起 理由
tmplinshi + 1 diff 好东西

查看全部评分

 楼主| 发表于 2015-1-8 14:49:08 | 显示全部楼层
本帖最后由 kmustwxw 于 2015-1-8 15:06 编辑

回复 2# DAIC 看到这段代码不知道说什么了,这应该是个很难的问题,没有想到,我弄了半天没能解决掉,你就这几行就完美的解决了,工具包里的这些工具的各自的功能,怎么用,没有说明吗?谢谢,太感谢 了。
发表于 2015-1-8 15:50:18 | 显示全部楼层
回复 3# kmustwxw


那个工具包里面是常见Linux命令的Windows版本,如果熟悉Linux命令的话应该很容易上手。
如果要查看某个命令的帮助信息,可以这样:
  1. diff --help
复制代码
发表于 2015-1-8 16:04:13 | 显示全部楼层
本帖最后由 tmplinshi 于 2015-1-8 16:06 编辑

可以用 WinMerge



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



 楼主| 发表于 2015-1-26 13:16:09 | 显示全部楼层
回复 4# DAIC 你好,DAIC,我想把两个文本的相同内容输出来,应该如何修改,把大于和小于改成等号吗??
发表于 2015-1-26 13:48:36 | 显示全部楼层
把两个文本的相同内容输出来
  1. @echo off
  2. findstr /x /g:1.txt 2.txt >3.txt
复制代码
发表于 2015-1-26 13:49:36 | 显示全部楼层
回复 6# kmustwxw


    不是。diff命令的作用就是查找不同的行。查找相同的行用findstr命令就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 19:06 , Processed in 0.020875 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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