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

[文本处理] [已解决]批处理怎样对比文本?

本帖最后由 小文 于 2015-2-15 19:47 编辑

功能简述:以a文本中的行的内容去匹配b文本的行的内容,把匹配到的行追加为c文本。

功能详述:
1.设a文本里有多行文本,b文本里有更多的多行文本;

2.我们用逐行用a文本里的行的内容去匹配b文本里的内容;

3.如果b文本里有匹配a文本里行的内容,则输出b文本中所在内容的行到c文本中,否则继续用a文本的下一行去匹配b文本的内容。

结果演示:
a文本:
47一行一6行第7一行第*&
第二行b文本栋
384756 一五一一一


b文本:
4y6第47一行一6行第7一行第*&……&*一行第一行638456
第二行b文本栋**牤擤固顶地yrt65547
398467b文本第三行*(&……*&第三行
第丁下盯有婆罗门稼的836450 四第行
有e6y58o567看中一384756 一五一一一


c文本:
4y6第47一行一6行第7一行第*&……&*一行第一行638456
第二行b文本栋**牤擤固顶地yrt65547
有e6y58o567看中一384756 一五一一一
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

加个参数试试:
findstr /l /i /g:a.txt b.txt > c.txt
1

评分人数

初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

如果前面的命令确实单行可用,那能不能用该命令循环使用在所需的文件?

这跟单行多行没有关系,你不知道 findstr 遇到哪个字符就会出问题。

TOP

那如果没有你后面说的那个命令是不是那个功能就实现不了了?

哪个功能实现不了?我测试了一下没有发现问题

TOP

回复 7# 小文


    微软的命令不是开源的,你看不到道理,只能知道它很多时候不能按照自己希望的那种方式去工作。

TOP

回复 6# Batcher


    怎么个“不靠谱”呢,应该有他的道理。单行匹配是可以的,多行像之前的a、b文本也是可以的,就不知道后面的多行为什么就不可以了。那如果没有你后面说的那个命令是不是那个功能就实现不了了?如果前面的命令确实单行可用,那能不能用该命令循环使用在所需的文件?

TOP

回复 5# 小文


findstr是个不太靠谱的命令,如果你有grep的话可以试试:
  1. grep -Ff a.txt b.txt > c.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


    为什么在这样的文本中没有用呢?对其使用命令:findstr /l /g:a.txt b.txt > c.txt
a.txt:
在计算机内部,
在计算机中,既可

b.txt:
在计算机内部,一切数据均以()形式存储选择B二进制
在计算机中,既可作为输入设备又可作为输出设备的是()选择B磁盘驱动器

c.txt:
(什么输出不了)

TOP

回复 2# Batcher


    谢谢你的帮助。就这么一小句,还真可以!dos果然是个好东西呀!

TOP

回复 1# 小文

TOP

  1. findstr /l /g:a.txt b.txt > c.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表