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

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

[复制链接]
发表于 2022-4-25 16:29:39 | 显示全部楼层 |阅读模式
本帖最后由 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该行

求大神指点如何写。。。。
发表于 2022-4-25 17:32:42 | 显示全部楼层
回复 1# dm990436


a b c d e
a b c m v 重复1个?规律是啥呢,每太看懂。
发表于 2022-4-25 21:12:33 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2022-4-26 16:55:20 | 显示全部楼层
本帖最后由 dm990436 于 2022-4-26 16:57 编辑

回复 2# Batcher


   不好意思,写错了,是a k r m v 大概的意思就是比较有几个相同的,然后跟条件相比较,满足的话打印。
发表于 2022-4-26 17:00:49 | 显示全部楼层
回复 4# dm990436


    请编辑一下顶楼的需求吧
 楼主| 发表于 2022-4-27 14:40:25 | 显示全部楼层
回复 5# Batcher


    已修改
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 03:12 , Processed in 0.019301 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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