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

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

[复制链接]
发表于 2013-2-20 22:42:09 | 显示全部楼层 |阅读模式
举个例子
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文本里。
发表于 2013-2-21 16:07:08 | 显示全部楼层
本帖最后由 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
复制代码
还是保险点,修改下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 00:24 , Processed in 0.016629 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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