Board logo

标题: [文本处理] [已解决]批处理如何实现文本对比差异写入? [打印本页]

作者: pZjVa0    时间: 2013-7-26 11:43     标题: [已解决]批处理如何实现文本对比差异写入?

批处理内容
  1. for /f %%a in (1.txt) do (
  2.     for /f %%i in (..\2.txt) do (
  3.         if %%a NEQ %%i echo %%a>>..\2.txt
  4.             )
  5.         )
复制代码
1.txt内容
  1. aa1
  2. aa2
  3. aa3
  4. aa4
  5. aa5
  6. aa6
复制代码
2.txt内容
  1. aa1
  2. aa2
复制代码
文件目录数
  1. E:\Desktop\文本内容对比>tree /f
  2. 文件夹 PATH 列表
  3. 卷序列号为 000051DC 000D:EDA9
  4. E:.
  5. │  2.txt
  6. └─呵呵
  7.         1.txt
  8.         测试.bat
复制代码
理想中的结果
  1. aa1
  2. aa2
  3. aa3
  4. aa4
  5. aa5
  6. aa6
复制代码
现实中的结果
  1. aa1
  2. aa2
  3. aa1
  4. aa2
  5. aa2
  6. aa3
  7. aa3
  8. aa3
  9. aa3
  10. aa3
  11. aa4
  12. aa4
  13. aa4
  14. aa4
  15. aa4
  16. aa4
  17. aa4
  18. aa4
  19. aa4
  20. aa4
  21. aa5
  22. aa5
  23. aa5
  24. aa5
  25. aa5
  26. aa5
  27. aa5
  28. aa5
  29. aa5
  30. aa5
  31. aa5
  32. aa5
  33. aa5
  34. aa5
  35. aa5
  36. aa5
  37. aa5
  38. aa5
  39. aa5
  40. aa5
  41. aa6
  42. aa6
  43. aa6
  44. aa6
  45. aa6
  46. aa6
  47. aa6
  48. aa6
  49. aa6
  50. aa6
  51. aa6
  52. aa6
  53. aa6
  54. aa6
  55. aa6
  56. aa6
  57. aa6
  58. aa6
  59. aa6
  60. aa6
  61. aa6
  62. aa6
  63. aa6
  64. aa6
  65. aa6
  66. aa6
  67. aa6
  68. aa6
  69. aa6
  70. aa6
  71. aa6
  72. aa6
  73. aa6
  74. aa6
  75. aa6
  76. aa6
  77. aa6
  78. aa6
  79. aa6
  80. aa6
复制代码
请求各位大神帮帮忙。
作者: pZjVa0    时间: 2013-7-26 12:00

本帖最后由 pZjVa0 于 2013-7-26 12:01 编辑

回复 2# lxzzr
作者: pZjVa0    时间: 2013-7-26 20:06

本帖最后由 pZjVa0 于 2013-7-26 20:38 编辑
  1. @echo off
  2. for /f %%a in ('findstr /v /b /e /g:1.txt 2.txt') do (echo %%a>>1.txt)
  3. pause
  4. exit
复制代码
已解决
作者: CrLf    时间: 2013-7-27 00:06

可以不用 for /f
  1. @findstr /v /x /l /g:1.txt 2.txt >$ & move /y $ 1.txt
复制代码

作者: pZjVa0    时间: 2013-7-27 00:12

回复 4# CrLf


    这段代码有没有办法可以优化成同时保留原来的数据,而不只是替换成差异的数据?
作者: pZjVa0    时间: 2013-7-27 00:17

  1. @findstr /v /x /l /g:1.txt 2.txt >$ & type $ >>1.txt & del $
复制代码
这个就可以满足我的要求了,你的临时文件也是一个非常赞的思路,感谢分享。
作者: CrLf    时间: 2013-7-27 00:23

附加就不需要临时文件了,这样就行:
  1. @findstr /v /x /l /g:1.txt 2.txt >>1.txt
复制代码

作者: pZjVa0    时间: 2013-7-27 00:34

本帖最后由 pZjVa0 于 2013-7-27 00:35 编辑

回复 7# CrLf
  1. FINDSTR: 无法从 1.txt 读取字符串
复制代码
这个虽然我很早就想过,但实践后发现是行不通的,目前发现临时文件+Type是最好的方法了,前面的echo语句我测试中发现会漏写一些字符串,例如字符窜之间有空格,空格后面就没被写进文件。




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