Board logo

标题: BAT代码如何比较两个文本? [打印本页]

作者: qjxx    时间: 2013-2-20 22:42     标题: 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-21 16:07

本帖最后由 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
复制代码
还是保险点,修改下




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