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

[文本处理] [已解决]批处理如何从B文本中删除A文本中已经存在的邮箱地址?

[复制链接]
发表于 2012-1-31 17:04:36 | 显示全部楼层 |阅读模式
A文本有数千邮箱,邮箱都是首尾相连,邮箱之间有一个空格,没有汉字。B文本里除了邮箱,还有汉字、英文、数字、空格……),但每个邮箱地址前后都有空格。我想从B文本中删除A文本中已经存在的邮箱地址,这批处理怎么写?高手帮帮忙,多谢了!

A文本样式:
ydb189@public.wh.hb.cn xjdfbtb@xj.cninfo.net cy01@mx.cei.gov.cn uw686997@sohu.com 2002@sina.com whsales@51job.com

B文本样式:
4.李明华  zbs@subaonet.com
5.孙继海  photos@ntrb.com.cn
6.何汶口  zjrb@public.zj.js.cn
7. 天河i:雨花石电子信箱: xiex@njnews.cn
经络按摩养生堂邮箱: jlamyst@163.com (已经联系)


地址库和新邮箱名单都是文本格式的

举个例子:

地址库:
123456@163.com abcdef@sina.com 09876@126.com

新邮箱名单:
4.李明华 zbs@subaonet.com   
5.孙继海 photos@ntrb.com.cn   
低价位 123456@163.com (有现货)

代码执行完,新邮箱名单应该是这样,删除了重复的(红色):
4.李明华 zbs@subaonet.com   
5.孙继海 photos@ntrb.com.cn   
低价位 (有现货)

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-1-31 18:40:22 | 显示全部楼层
这个要求助正则表达式咯~
 楼主| 发表于 2012-1-31 19:06:20 | 显示全部楼层
回复 2# applba


    能否再帮个忙?多谢了!!
发表于 2012-2-1 10:43:22 | 显示全部楼层

  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do (
  3.     for %%a in (%%i) do set "%%a=="
  4. )
  5. (for /f "tokens=1,2*" %%i in (b.txt) do if not defined %%j echo %%i %%j %%k)>$
  6. move $ b.txt
复制代码

评分

参与人数 2技术 +2 收起 理由
guaiwu + 1 厉害啊。 竟然能想到有set来完成需求。
gu3669 + 1 乐于助人

查看全部评分

 楼主| 发表于 2012-2-1 15:18:34 | 显示全部楼层
非常感谢你,很成功!老麻烦你,真不好意思。还有一个问题不得不再次求教:想把文件夹A里的所有文本中的Email(不要汉字)汇总,在文件夹外生成一个新文本B,同时将内容按拼音排序,过滤重复的。A文件夹文本中的格式都是:汉字+空格+Email,也有的Email后面跟汉字,但之间有空格,只有一个文本是一个Email占一行(没有汉字)前后都没有空格。 再次感谢你!祝你新年快乐!
发表于 2012-2-1 17:32:40 | 显示全部楼层
本帖最后由 lvsehuaxue 于 2012-2-1 17:36 编辑

回复 5# gu3669

  1. @echo off
  2. copy *.txt $
  3. (for /f "delims=" %%i in ('sort $') do if not defined %%i echo %%i&set "%%i==")>b.txt
复制代码
 楼主| 发表于 2012-2-1 20:23:28 | 显示全部楼层
太谢谢你了。不过执行完毕把中文也都汇总过来了,我只想汇总Email(中文和Email之间是有空格的),还得再麻烦你,真不好意思。还有,文本b里多了一句“ECHO 处于关闭状态”。
 楼主| 发表于 2012-2-1 20:49:34 | 显示全部楼层
或者在执行完毕时把Email前面的空格到行首这一块(空格连同汉字)都删除,然后再排序就行了。
发表于 2012-2-2 00:44:20 | 显示全部楼层
回复 8# gu3669

  1. @echo off
  2. copy *.txt $
  3. (for /f "tokens=1-3" %%i in ($) do if "%%j" neq "" (echo %%j) else echo %%i)>$1
  4. (for /f "delims=" %%i in ('sort $1') do if not defined %%i echo %%i&set "%%i==")>b.txt
  5. del $ $1
复制代码
 楼主| 发表于 2012-2-2 10:20:50 | 显示全部楼层
再次感谢你!!祝你一切顺利!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 20:47 , Processed in 0.022228 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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