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

[文本处理] DOS BAT怎么比较两个字符串根据数量的多少判定是否打印到新的txt中?

本帖最后由 dm990436 于 2022-4-27 14:39 编辑

有2个txt文件,
1.txt中有
a b c d e
b f g s z
b g u l m
...
2.txt中有
a c d g l
a k r m v
c e q l n
...
需求:
预先设定重复个数2或者3个的打印出来。
1.txt中的每一行要跟2.txt中的每一行做比较,取最大的相同数量,譬如1.txt中的a b c d e逐行跟2.txt的每一行比较,只要有一个满足条件就打印出来:
a c d g l 重复3个,满足条件
a k r m v 重复1个,不满足
c e q l n 重复c e,2个,满足条件。则打印出1.txt中a b c d e该行

如b f g s z 循环2.txt的每一行,
a c d g l 重复1个,不满足条件
a k r m v 重复0个,不满足
c e q l n 重复0个,不满足。
b f g s z 不满足2-3个重复个数,则不打印1.txt中b f g s z该行

求大神指点如何写。。。。

回复 1# dm990436


a b c d e
a b c m v 重复1个?规律是啥呢,每太看懂。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. for /f "delims=" %%1 in (1.txt)do (
  4. call :cmp "%%1"
  5. )
  6. pause
  7. goto :eof
  8. :cmp str1 mstr
  9. SetLocal
  10. for %%a in (%~1)do (
  11. set _%%a=1
  12. )
  13. for /f "delims=" %%2 in (2.txt)do (
  14. set lflag=0
  15. for %%b in (%%2)do (
  16. if defined _%%b set/alflag+=1
  17. )
  18. if !lflag! equ 2 echo/%~1&&goto :endc
  19. if !lflag! equ 3 echo/%~1&&goto :endc
  20. )
  21. :endc
  22. EndLocal
复制代码
如无特别说明,代码测试环境均为 XP SP3

TOP

本帖最后由 dm990436 于 2022-4-26 16:57 编辑

回复 2# Batcher


   不好意思,写错了,是a k r m v 大概的意思就是比较有几个相同的,然后跟条件相比较,满足的话打印。

TOP

回复 4# dm990436


    请编辑一下顶楼的需求吧
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Batcher


    已修改

TOP

返回列表