Board logo

标题: [文本处理] 批处理如何提取文本中的网址? [打印本页]

作者: hhz520    时间: 2010-3-20 08:09     标题: 批处理如何提取文本中的网址?

如何提取文本中的网址src="http://xxxxx.cn/201003/20/128/o_16960_19426_tce9595945c3dcd8ea2a7.gif"
            ></td></tr></tbody></table></td></tr>
  <tr>
    <td background=http://xxxxx.cn/201003/20/128/o_16960_19426_t45d66d96bee29cfc3178.gif
>
   </td>

我想把SRC和background后面的图片网址都提出来  如何做呢  谢谢~
作者: namejm    时间: 2010-3-20 12:27

  论坛会对一些字符进行转码导致原文走形,请在顶楼以附件方式上传全文。
作者: hhz520    时间: 2010-3-20 13:42

src="http://xxxxx.cn/201003/20/128/o_16960_19426_tce9595945c3dcd8ea2a7.gif"
            ></td></tr></tbody></table></td></tr>
  <tr>
    <td background=http://xxxxx.cn/201003/20/128/o_16960_19426_t45d66d96bee29cfc3178.gif
>
   </td>

我想把SRC和background后面的图片网址都提出来  如何做呢  谢谢~
作者: sysplay    时间: 2010-3-20 17:15

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1* delims==" %%i in (a.txt) do (
  4. set url=%%~j
  5. if not "!url!"=="" echo !url!
  6. )
  7. pause
复制代码

作者: youxi01    时间: 2010-3-20 17:27

请下载附件,解压缩后运行其中的VBS文件!

VBS程序源代码:
  1. Set FSO=CreateObject("Scripting.FileSystemObject")
  2. '/*/////////////////////////////////////////////////////////
  3. '*MadeTime: 2009-10-21
  4. '*LastModify: 2009-03-20
  5. '*功能: 提取内容正则表达式
  6. '*参数: 正则表达式;待处理数据对象
  7. '**********************************************************
  8. Function MyRegExp(Patrn,Strng)
  9. Set RegEx1=New RegExp
  10. With RegEx1
  11. .Pattern = Patrn
  12. .IgnoreCase=True     
  13. .Global=True
  14. End With
  15. Set Matches =RegEx1.Execute(strng)
  16. For i=0 to Matches.Count-1
  17. MyRegExp=MyRegExp & i+1 & "  " & Matches(i).subMatches(0) & VBCRLF
  18. Next
  19. End Function
  20. '/*/////////////////////////////////////////////////////////
  21. '*MadeTime: 2010-03-20
  22. '*LastModify: 2010-03-20
  23. '*功能: 读取文本文件全部内容
  24. '*参数: 当前目录文本文件
  25. '**********************************************************
  26. Function ReadFile(FileName)
  27. Set File=FSO.OpenTextFile(FileName,1,1)
  28. ReadFile=File.ReadAll
  29. Set File=nothing
  30. End Function
  31. msgbox "scr地址:" & vbcrlf & MyRegExp("src=[""']?(http.*gif)",ReadFile("test.txt"))
  32. msgbox "BG地址:" & vbcrlf & MyRegExp("background=[""']?(http.*gif)",ReadFile("test.txt"))
  33. Set FSO=nothing
复制代码

作者: BatCoder    时间: 2010-3-20 18:32

  1. grep -o "http://.*\.gif" a.txt
复制代码

作者: hhz520    时间: 2010-3-20 20:50

谢谢sysplay的解答  但你的代码只是读了文本  并没有把网址提取出来~

谢谢管理员的解答   但运行提示输入超出了文件尾   代码  :800A003E错误

谢谢batcoder的解答    但你的代码运行后什么都没有~~
作者: hhz520    时间: 2010-3-20 20:51

我在网上找到这个代码
作者: hhz520    时间: 2010-3-20 20:52

我在网上找到这个代码
@(type *.txt|wfr /r:"(.*src\=\"^|\"\s.*)" /t|findstr "^http.*\.gif$">list.txt)&&start list.txt

可以提取到SRC后的网址  但background后的网址就不能提取了  

请帮忙修改一下  谢谢~
作者: BatCoder    时间: 2010-3-20 21:21     标题: 回复 7楼 的帖子

你确定自己有grep.exe吗?
作者: youxi01    时间: 2010-3-20 21:23

原帖由 hhz520 于 2010-3-20 20:50 发表
谢谢管理员的解答   但运行提示输入超出了文件尾   代码  :800A003E错误


请下载附件,解压缩后直接运行其中的VBS(不要保存运行上面给的VBS代码),还要注意不要删除同目录下的test.txt
作者: BatCoder    时间: 2010-3-20 21:23     标题: 回复 9楼 的帖子

网上找的代码需要自己看懂才能活学活用啊,在wfr里面只过滤.*src当然找不到background啦。
作者: inittab    时间: 2010-3-20 22:02

灵活运用sed会比较好处理
  1. sed "/http/!d;s/.*\(http:.*.gif\).*/\1/g" a.txt
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2