(大神在哪里)批处理 实现两个文本文件内容的对比(包含通配符)

有文件A和文件B文件A是对比字符串文件,文件B是用来比较后修改的文件A的内容ds.pandawork.net*.dev.netds.*.netds.**B的内容#125.... 有文件A和文件B
文件A是对比字符串文件 ,文件B是用来比较后修改的文件
A的内容
ds.pandawork.net
*.dev.net
ds.*.net
ds.*
*
B的内容
#125.222.219.147 ds.dev.net
#125.222.219.147 sso.dev.net
#125.222.219.147 ml.dev.net
#125.222.219.147 edu.dev.net
#125.222.219.147 solr.dev.net
#125.222.219.147 db.ds.dev.net #数据库域名
#125.222.219.147 pui.dev.net
#125.222.219.147 red5.dev.net
#125.222.219.147 static.ds.dev.net
#125.222.219.147 static.ds.pandawork.net

要求把B文件中 包含匹配A任何字符串的那行文本删除
有一种情况就是,如果要查找的ds.pandawork.net ,
#125.222.219.147 static.ds.pandawork.net 这种情况不能删除那一行,也就是要全字匹配,但是又要支持通配符 这样就导致findstr /ivg:2.txt 1.txt>3.txt 这种方法不能用了
展开
 我来答
yyykkkyyyy
2014-05-05 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3266万
展开全部

这问题确实很麻烦,而不带“通配符”及不用“全匹配”时却相当简捷,,我也不是什么大神,写了一个试试(那个a.txt 不会太多行数吧)

@echo off&setlocal enabledelayedexpansion
set "f1=a.txt"
set "f2=b.txt"
set "s=[^.][^.]*"
set ss="%%b" "%%c" "%%d" "%%e" "%%f" "%%g" "%%h"
for /f %%i in ('type %f1%')do (
   set "h=y%%iy"
   for /f "tokens=1-8 delims=*" %%a in ("!h:.=\.!") do (
      set "q=%%a"
      set "q=[1-9][0-9]*:!q:~1!"
      for %%j in (%ss%)do if not %%j=="" set "q=!q!!s!%%~j"
      set "sn=!sn! !q:~,-1!"
))
(for /f "tokens=2" %%i in ('type "%f2%"')do (
   set/a n+=1
   set #!n!=y
   echo;!n!:%%i))>c.txt
for /f "delims=:" %%i in ('findstr/ix "!sn!" c.txt')do set "#%%i="
(for /f "delims=" %%i in ('type "%f2%"')do (
set/a m+=1
if defined #!m! echo;%%i
))>c.txt
:: move c.txt "%f2%"
pause
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式