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

[原创] sendkey大显神威送你n本奇幻小说

本帖最后由 batman 于 2011-5-9 10:43 编辑

前言:  
  最近论坛暗暗兴起了一股批处理下载热,jm还就此写出了关于curl下载的相关教程。我认为这确实是件好事,至少由此力证了批处理并不是花拳绣脚,而是有着广泛的实用性。要做到下载,就必须对网页源码进行分析和操作,相对于批处理而言,vbs对此更有着优越性,它针对于对象的操作让此变得很轻松,批处理却只能借助于第三方工具来实现。于是,本人在此之前鼓捣出了四大名著下载vbs版。。。
  继四大名著下载后今日再推出批量下载代码。由于代码是采用的ie自带下载,所以采用了sendkey来模拟键盘操作。其实有很多人并不看好sendkey,认为这样的操作太不稳定,本人以前也是这样以为的。但是从下面这段代码,可以看出只要控制好sendkey,它还是大有可为的。。。
    代码从网页源码中获取小说名及下载地址,并用vbs调用cmd命令利用ie默认下载,同时对下载的temp.zip重命名并移动到当前目录下。
注:
  由于是采用的ie(ie8可能不行)自带下载,所以在运行代码前请先关闭迅雷或其他下载软件的浏览器监视功能,最好关闭杀软的网络监控。同时将代码中的temp路径改为你的ie默认下载路径(本人的是桌面),并将输入法置于英文输入状态。在下载过程可能会因为有些地址无法连接而弹出错误窗口,对于此代码设置了超时等待(初始为30秒,自己可以根据网络情况修改),等待超时会自动进入下一个文件的下载。整个下载过程全是由程序自动完成的,你要做的就是静静坐在电脑前看着一本本小说(zip文件)被下载到电脑中。。。
  1. Dim fso, vbstr, wssh, regstr, temp, XMLHTTP, AdoStrm
  2. Set fso = CreateObject("scripting.filesystemobject")
  3. Set wssh = CreateObject("wscript.shell")
  4. Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")
  5. set AdoStrm = CreateObject("ADODB.Stream")
  6. XMLHTTP.Open "GET", "http://www.d9cn.org/modules/article/index.php?fullflag=1", False
  7. Do Until XMLHTTP.readyState = 1:WScript.Sleep 200:Loop
  8. XMLHTTP.Send()
  9. AdoStrm.Mode = 3
  10. AdoStrm.Type = 1
  11. AdoStrm.Open()
  12. AdoStrm.Write XMLHTTP.responseBody
  13. AdoStrm.SaveToFile wssh.CurrentDirectory & "\temp.htm", 2
  14. adostrm.Close
  15. Set XMLHTTP = Nothing
  16. set AdoStrm = Nothing
  17. vbstr = fso.OpenTextFile(wssh.CurrentDirectory & "\temp.htm", 1, True).ReadAll()
  18. fso.DeleteFile wssh.CurrentDirectory & "\temp.htm"
  19. temp = "C:\Docume~1\Administrator\桌面\temp.zip"
  20. regtest vbstr, "(<h3>).*?(\w+):\/\/([^/:]+)(/d9info)([^# ]*)?(htm)(.>)?(.*)?(</a>)"
  21. Set fso = nothing
  22. Set wssh = Nothing
  23. MsgBox "ok"
  24. Function regtest(str, pattern)
  25.   Dim regex, matches, match, name, url, i
  26.   Set regex = New RegExp
  27.   regex.Pattern = pattern
  28.   regex.Global = True
  29.   regex.IgnoreCase = False
  30.   Set matches = regex.Execute(str)
  31.   For Each match In matches
  32.     name = match.Submatches(7) & ".zip":i = 0
  33.     url = "http://121.11.149.131:60889/d9cnzip" & match.Submatches(4) & "zip"
  34.     wssh.Run "cmd /c start " & url, 0, True
  35.     WScript.Sleep 500
  36.     wssh.SendKeys "{delete}"
  37.     WScript.Sleep 500
  38.     wssh.SendKeys "{delete}"
  39.     WScript.Sleep 500
  40.     wssh.SendKeys "{delete}"
  41.     WScript.Sleep 500
  42.     wssh.SendKeys "s"
  43.     WScript.Sleep 500
  44.     wssh.SendKeys "temp"
  45.     WScript.Sleep 500
  46.     wssh.SendKeys "{tab}"
  47.     WScript.Sleep 500
  48.     wssh.SendKeys "{tab}"
  49.     WScript.Sleep 500
  50.     wssh.SendKeys "s"
  51.     Do Until fso.FileExists(temp) Or i = 150
  52.        i = i+1
  53.        WScript.Sleep 200
  54.     Loop
  55.     wssh.SendKeys "{enter}"
  56.     If fso.FileExists(temp) Then fso.MoveFile temp,  wssh.CurrentDirectory & "\" & name
  57.     WScript.Sleep 500
  58.   Next
  59. End Function
复制代码
***共同提高***

返回列表