中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 12:43
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS批处理 & 脚本技术(批处理室) » 求助-从一txt文档中提取email地址
可打印版本  7,687 / 32
第1楼 uime 发表于 2006-09-25 18:59
初级用户 发帖 27 积分 70 来自 河南
求助-从一txt文档中提取email地址
现有一txt文档,想提取其中的email地址
文件如下

[ Last edited by uime on 2006-9-26 at 05:27 ]

附件
email.txt (57.81 KiB)
第2楼 namejm 发表于 2006-09-25 19:50
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  试试下面的代码:


[ Last edited by namejm on 2006-9-25 at 19:56 ]
第3楼 NaturalJ0 发表于 2006-09-25 20:03
银牌会员 发帖 533 积分 1,181
第4楼 NaturalJ0 发表于 2006-09-25 20:05
银牌会员 发帖 533 积分 1,181
早啊,namejm ,发现你手比我快。 = =
第5楼 NaturalJ0 发表于 2006-09-25 20:13
银牌会员 发帖 533 积分 1,181
不过,这句什么意思,我没看懂。

set "var=!var:"=!"

好像不写结果也一样。
第6楼 namejm 发表于 2006-09-25 20:37
荣誉版主 发帖 1,737 积分 5,226 来自 成都
Originally posted by NaturalJ0 at 2006-9-25 20:13:
set "var=!var:"=!"
好像不写结果也一样。

如果不写这一句,那么,xliu@cqnu.edu.cn 这条记录将会在最前面的 x 处带个前引号,我也是后来测试的时候才发现的。
第7楼 9527 发表于 2006-09-25 21:30
银牌会员 发帖 438 积分 1,185 来自 北京
for /f "tokens=2 delims== " %x in ('findstr "@" email.txt') do echo %~x
第8楼 uime 发表于 2006-09-25 21:56
初级用户 发帖 27 积分 70 来自 河南
谢谢大家

我的问题和5楼的一样
引号好像也不配套啊

如果是同时提取用户名和email呢?
就像:
name email
的格式

[ Last edited by uime on 2006-9-25 at 22:01 ]
第9楼 redtek 发表于 2006-09-26 00:31
金牌会员 发帖 1,147 积分 2,902
Mail名与Mail地址分离:



[ Last edited by redtek on 2006-9-26 at 00:46 ]
第10楼 pengfei 发表于 2006-09-26 02:32
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
强! 顶一个先.
第11楼 pengfei 发表于 2006-09-26 03:30
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
仔细看过之后, 才发现9楼朋友的代码提取的内容并不是楼主预期的.

在写代码的过程中发现楼主的网页内容存在错误, 如: 熊明勇、刘玺、dage三个名字后面跟的并不是有效的E-mail地址, 在取E-mail时需要多用一个判断. 整段代码的工作效率是比较低的。写完这段代码, 我神智已经不清醒了, 呵呵~ 也没有进行优化。请大家测试~~~

@echo off
setlocal enabledelayedexpansion
for /f "tokens=5 delims==" %%i in ('findstr /i /c:"WIDTH: 80px" email.txt') do (
set /a one=!one!+1
set num=1
set two=
for /f "tokens=2 delims== " %%a in ('findstr /i /c:"uemail" email.txt') do (
set /a two=!two!+1
if /i "!num!"=="1" (
if /i not "%%a"=="150><INPUT class" (
if /i not "%%i"=="uname></TD>" (
if /i "!one!"=="!two!" (
echo %%i %%~a>>name.txt
set num=
)
)
)
)
)
)
pause

[ Last edited by pengfei on 2006-9-26 at 09:01 ]
第12楼 zerostudy 发表于 2006-09-26 04:16
中级用户 发帖 98 积分 266
头晕~~
第13楼 uime 发表于 2006-09-26 04:50
初级用户 发帖 27 积分 70 来自 河南
真的不错,谢谢大家的热心,虽然执行了,但是对for语句还是有点模糊

[ Last edited by uime on 2006-9-26 at 05:14 ]
第14楼 hushi8888 发表于 2006-09-26 04:52
新手上路 发帖 2 积分 8
可能EXCEL处理数量较少的这样的文件比较快!
第15楼 redtek 发表于 2006-09-26 05:00
金牌会员 发帖 1,147 积分 2,902
哇噻~~爽~!!!
1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023