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

BAT代码如何比较两个文本?

举个例子
A文本内容为
123123        广州        10ml        A12        30
156464        上海        20ml        A13        20
456799        北京        15mg        B12        10

B文本内容为
123123        广州        10ml        A12        3
156464        上海        20ml        A13        2
456799        北京        15mg        B12        10
我要的结果C文本为"
123123        广州        10ml        A12        3
156464        上海        20ml        A13        2
我是以B文本文件的横向为数据组(有5组),跟A文本文件里的横向数据组(有5组)比较,前面4组数据相同,最后一处数据不相同的。
就把B的数据写到C文本里。

本帖最后由 apang 于 2013-2-22 14:37 编辑

保存为test.vbs,试试
  1. Set FSO = CreateObject("Scripting.FileSystemObject")
  2. Set f = FSO.OpenTextFile("a.txt")
  3. Do Until f.AtEndOfStream
  4.    s = f.ReadLine '循环读取a.txt每一行
  5.    Text = Text & s & vbLf
  6.    '在每行后加换行符,赋值给变量Text
  7. Loop
  8. f.Close :Set f = Nothing
  9. Set f = FSO.OpenTextFile("b.txt")
  10. Do Until f.AtEndOfStream
  11.    s = f.ReadLine '循环读取b.txt每一行
  12.    If InStr(vbLf & Text,vbLf & s & vbLf) = 0 Then GetStr
  13.    '如果该行字串在Text变量中不存在
  14. Loop
  15. MsgBox "OK"
  16. Sub GetStr()
  17.    Set Re = New RegExp
  18.    Re.Pattern = "^(.*\s+)\S+$" '正则表达式
  19.    For Each a in Re.Execute(s)
  20.       If InStr(vbLf & Text,vbLf & a.SubMatches(0)) Then
  21.       '如果该行前4项字串在Text中存在,将该行写入c.txt
  22.          FSO.OpenTextFile("c.txt",8,True).WriteLine s
  23.       End If
  24.    Next
  25. End Sub
复制代码
还是保险点,修改下

TOP

返回列表