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

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

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   
低价位 (有现货)
1

评分人数

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

这个要求助正则表达式咯~

TOP

回复 2# applba


    能否再帮个忙?多谢了!!

TOP

  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

评分人数

    • guaiwu: 厉害啊。 竟然能想到有set来完成需求。技术 + 1
    • gu3669: 乐于助人技术 + 1

TOP

非常感谢你,很成功!老麻烦你,真不好意思。还有一个问题不得不再次求教:想把文件夹A里的所有文本中的Email(不要汉字)汇总,在文件夹外生成一个新文本B,同时将内容按拼音排序,过滤重复的。A文件夹文本中的格式都是:汉字+空格+Email,也有的Email后面跟汉字,但之间有空格,只有一个文本是一个Email占一行(没有汉字)前后都没有空格。 再次感谢你!祝你新年快乐!

TOP

本帖最后由 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
复制代码

TOP

太谢谢你了。不过执行完毕把中文也都汇总过来了,我只想汇总Email(中文和Email之间是有空格的),还得再麻烦你,真不好意思。还有,文本b里多了一句“ECHO 处于关闭状态”。

TOP

或者在执行完毕时把Email前面的空格到行首这一块(空格连同汉字)都删除,然后再排序就行了。

TOP

回复 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
复制代码

TOP

再次感谢你!!祝你一切顺利!

TOP

返回列表