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

[文本处理] [已解决]批处理如何提取文本中的邮箱地址?

[复制链接]
发表于 2014-2-9 12:44:28 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-11-16 19:05 编辑

祝大家新年快乐


张三        13366325775(手机)
E-mail:        970655918@qq.com
13439881949(手机)李四
E-mail:        sh1009i@163.com

评分

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

查看全部评分

发表于 2014-2-9 15:42:49 | 显示全部楼层
本帖最后由 522235677 于 2014-2-9 15:48 编辑
  1. @echo off
  2. for /f "tokens=2" %%i in ('findstr /i "mail" 1.txt') do echo %%i
  3. pausee
复制代码
 楼主| 发表于 2014-2-9 16:30:55 | 显示全部楼层
回复 2# 522235677

好像不行呀,,附件上传了,谢谢哈
发表于 2014-2-9 17:54:51 | 显示全部楼层
本帖最后由 522235677 于 2014-2-9 17:55 编辑

回复 3# mick00034


    @echo off
for /f "tokens=2 delims=$" %%i in ('find /i "mail" 1.txt') do echo %%i
pause
把$换成tab

评分

参与人数 1技术 +1 收起 理由
mick00034 + 1 谢谢帮忙~~

查看全部评分

 楼主| 发表于 2014-2-9 19:03:46 | 显示全部楼层
回复 4# 522235677

结果很多邮件不完整,,,每一行前多了il:
il:        970655918@qq.com
il:        sh1009i@163.com
il:        dier
il:        m
il:        903982792@qq.com
il:        835085702@qq.com
il:        zz360278227@126.com
il:        272746276@qq.com
il:        cxy_vision@163.com
il:        605525195@qq.com
il:        liu
il:        1203482977@qq.com
发表于 2014-2-9 20:03:28 | 显示全部楼层
我能给你有问题的代码?
 楼主| 发表于 2014-2-9 21:07:18 | 显示全部楼层
本帖最后由 mick00034 于 2014-2-10 09:15 编辑

回复 6# 522235677

您的代码应该是没问题的,只是小弟不会导出那个效果呀,能指点一下就谢谢了。

是我弄错了,,,已经解决
发表于 2014-2-9 21:22:48 | 显示全部楼层
本帖最后由 battab 于 2014-2-9 21:50 编辑

回复 7# mick00034
  1. @echo off
  2. for /f "tokens=2 " %%i in ('find/i "@" 1.txt') do echo %%i>>2.txt
复制代码
6#随便给点样例就好了,搞那么长有点浪费。

评分

参与人数 1技术 +1 收起 理由
mick00034 + 1 乐于助人

查看全部评分

发表于 2014-2-9 22:53:57 | 显示全部楼层
本帖最后由 apang 于 2014-2-10 00:11 编辑

以#3附件为例,有效邮箱地址1972个,用find或findstr会漏掉很多。
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. txt = fso.OpenTextFile("1.txt",1,false,-1).ReadAll
  3. Set re = New RegExp
  4. re.Pattern = "[\w\-\.]+@.+\.(com|cn|net)"
  5. re.IgnoreCase = True
  6. re.Global = True
  7. For Each m in re.Execute(txt)
  8.     s = s & m & vbCrLf
  9. Next
  10. fso.OpenTextFile("2.txt",2,true).Write s
复制代码

评分

参与人数 1技术 +1 收起 理由
mick00034 + 1 感谢分享

查看全部评分

 楼主| 发表于 2014-2-10 07:35:48 | 显示全部楼层
本帖最后由 mick00034 于 2014-2-10 07:49 编辑

回复 10# apang
您说的很对,数据差几十个,如果原始数据大的话,就差更多了,谢谢热心帮助,

弱弱的问一下,您的代码更改一点,是否也适用于提取附件里的电话号码?学习了
发表于 2014-2-10 08:46:12 | 显示全部楼层
回复 11# mick00034


    re.Pattern = "[\w\-\.]+@.+\.(com|cn|net)"
换成
re.Pattern = "1\d{10}"

评分

参与人数 1技术 +1 收起 理由
mick00034 + 1 多谢指点,,

查看全部评分

发表于 2014-2-16 12:39:00 | 显示全部楼层
回复 9# apang


    fnd,findstr为什么会漏掉匹配数据,请指教?
发表于 2014-2-16 13:20:54 | 显示全部楼层
本帖最后由 apang 于 2014-2-16 13:22 编辑

回复 12# battab
附件中有很多类似这样的不规则的行:
  1. 谢华电子邮箱:349172507@qq.com移动电话:15311318739
  2. 王力飞电话:13811074493|邮箱 ]wanglifeidv@126.com
  3. 臧丽媛联系方式:13366640525 邮箱地址:up2013tess@foxmail.com
复制代码
用 find /i "mail" 1.txt 或者用for取第二列都会遗漏
发表于 2014-2-16 23:08:28 | 显示全部楼层
回复  battab
附件中有很多类似这样的不规则的行:用 find /i "mail" 1.txt 或者用for取第二列都会遗漏
apang 发表于 2014-2-16 13:20


请问,用“@”符号作为搜索判断依据可以吗?
为什么以上几位老大都没用啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 18:35 , Processed in 0.022270 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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