Board logo

标题: [文本处理] 批处理怎样提取多个文本内的网址? [打印本页]

作者: ccfxy    时间: 2010-12-12 10:27     标题: 批处理怎样提取多个文本内的网址?

我电脑上现在有好多个 txt文件 download(1).txt   到 download(10000).txt
里面的内容如下
download(1).txt  内容

<br><b>文件名称:</b><u>AN7173NK.gif</u><br><b>文件大小:</b>11KB<br><b>下载地址:
http://www.jddl.net/hm/download/gif/chip/c/CXA11s33.gif

download(2).txt 内容
<br><b>文件名称:</b><u>CXA1191M.gif</u><br><b>文件大小:</b>12KB<br><b>下载地址:http://www.jddl.net/hm/download/gif/chip/c/CXA1191M.gif

其他文本内容都大概相似,但是下载地址后缀不都是gif  有pdf的 有rar的。现在想把所有文本里的网址都提取出来 放到一个新的文本里一行显示一个地址,也就是这样
http://www.jddl.net/hm/download/gif/chip/c/CXA11s33.gif
http://www.jddl.net/hm/download/gif/chip/c/CXA1191M.gif

希望有高人能帮忙解决下
作者: hanyeguxing    时间: 2010-12-12 11:15

你提供的两个样本不一致,最好把一个文本直接贴上来或传上来。。。
作者: broly    时间: 2010-12-12 12:15

VBS
  1. 'VBS用正则表达式提取网址
  2. 'CODE BY Broly
  3. Dim fso,re,f,txt,objm
  4. Set fso=CreateObject("Scripting.Filesystemobject")
  5. Set re=New RegExp
  6. re.Global=True
  7. re.IgnoreCase=True
  8. re.Pattern="http://www\.jddl\.net/hm/download/gif/chip/c/\w+.\w+"
  9. For i=1 To 2
  10. Set f=fso.OpenTextFile("download("&i&").txt",1,false)
  11. Set objm=re.Execute(f.ReadAll)
  12. For Each ma In objm
  13.    s=ma.Value & Chr(13) & Chr(10) & s
  14. Next
  15. f.Close
  16. Next
  17. Set txt=fso.CreateTextFile("url.txt",true)
  18. txt.WriteLine(s)
  19. txt.Close
  20. WScript.Echo "已保存为url.txt"  '此行可以删了
复制代码

作者: ccfxy    时间: 2010-12-12 12:31

用3楼的办法已经解决了 多谢 3楼 这里真是个好地方
作者: broly    时间: 2010-12-12 12:40     标题: 回复 4楼 的帖子

对了,你把For i=1 To 2
改为For i=1 To 10000吧。
我测试时用2个文本测试。你的文本是有10000个
忘记修改回来了
作者: ccfxy    时间: 2010-12-12 12:46

又发现个问题 那个网址目录结构有好多都不一样 而且文件名有中文的都提取不出来 不知还有什么方法解决不
作者: ccfxy    时间: 2010-12-12 12:47

http://www.jlgl.net/\w+/\w+/\w+/\w+/\w+.\w+ 我把网址改成这样了 但是有的目录层数不一样 也提取不出来 还有就是中文文件名无法提取
作者: broly    时间: 2010-12-12 13:04

  1. re.Pattern="http://www\.jddl\.net/.+\.\w+"
复制代码

作者: ccfxy    时间: 2010-12-12 13:42

全部搞定 多谢Broly

以后得好好学习学习




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