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

可以的话试一下运行下面这个返回的数字是多少:
  1. <!-- :
  2. @mshta "%~f0"
  3. -->
  4. <script>
  5. var host = 'http://batch-cn.qiniudn.com/'
  6. var ar = getText(host+'list/tool.txt').split(/\r?\n/)
  7. alert(ar.length)
  8. function getText(strUrl){
  9. var http = new ActiveXObject("Msxml2.ServerXMLHTTP")
  10. http.open("GET",strUrl+'?'+Math.random(),false)
  11. http.send()
  12. if(http.status>=400)return
  13. var stream = new ActiveXObject("ADODB.Stream")
  14. stream.Type = 1
  15. stream.Mode = 3
  16. stream.open()
  17. stream.write(http.responseBody)
  18. stream.Position = 0
  19. stream.Type = 2
  20. stream.CharSet = 'gb2312'
  21. return stream.ReadText
  22. }
  23. close()
  24. </script>
复制代码

TOP

本帖最后由 CrLf 于 2015-10-24 19:05 编辑

回复 3# 447219071


别截图,文字描述就好了,论坛空间宝贵,一张图顶一堆代码呢
试试这个,文字可以右键标记复制,或者自行重定向到文件再复制:
  1. <!-- :
  2. @mshta "%~f0" | more & pause
  3. -->
  4. <script src="http://www.bathome.net/lib/diy/WSH.js"></script>
  5. <script>
  6. var host = 'http://batch-cn.qiniudn.com/'
  7. var ar = getText(host+'list/tool.txt')
  8. var ar = getText(host+'list/tool.@version.txt')
  9. function getText(strUrl){
  10. WSH.Echo('网址为'+strUrl+'?'+Math.random())
  11. try{
  12. var http = new ActiveXObject("Msxml2.ServerXMLHTTP")
  13. WSH.Echo('http:'+typeof http)
  14. http.open("GET",strUrl+'?'+Math.random(),false)
  15. http.send()
  16. WSH.Echo('status='+http.status)
  17. if(http.status>=400)return
  18. var stream = new ActiveXObject("ADODB.Stream")
  19. stream.Type = 1
  20. stream.Mode = 3
  21. stream.open()
  22. stream.write(http.responseBody)
  23. WSH.Echo('Size='+stream.Size)
  24. stream.Position = 0
  25. stream.Type = 2
  26. stream.CharSet = 'gb2312'
  27. return stream.ReadText
  28. }
  29. catch(Err){WSH.Echo(Err.message)}
  30. }
  31. close()
  32. </script>
复制代码

TOP

本帖最后由 CrLf 于 2015-10-24 19:38 编辑

一种可能是 getText 得不到 tool.txt 的列表
另一种可能是你的 <script> 中包含 offline_Tools 属性,说明是离线使用,但运行时却无法在当前路径下找到 tool.txt

TOP

回复 7# 447219071


    我是问你回显是什么。。。。。。。

TOP

回复 9# 447219071


    现在试试

TOP

回复 11# 447219071


    已关防盗链,现在试试看,要是还不行我也搞不懂什么原因了

TOP

回复 13# 447219071


    果然是防盗链的原因,现在你再试试顶楼代码应该可以运行了。你们那是什么环境,怎么会这么奇葩
    防盗链就暂时关闭着吧,回头发现恶意下载的情况再开启

TOP

和代码无关,只是在七牛云的空间里关了防盗链而已

TOP

本帖最后由 CrLf 于 2015-10-26 01:05 编辑

回复 17# 447219071


不知道是什么原因造成的,先排查下,你试试在三台电脑上分别运行这个 bat 是什么结果,并告诉我之前是哪两台不能用:
  1. <!-- :
  2. @echo off
  3. mshta "%~f0" | more
  4. pause & exit
  5. -->
  6. <script src='http://www.bathome.net/lib/diy/hide.js'></script>
  7. <script src='http://www.bathome.net/lib/diy/WSH.js'></script>
  8. <script>
  9. WSH.Echo(getText('http://121.40.138.166/REFERER.php').replace(/\<br \/\>/g,'\r\n'))
  10. close()
  11. function getText(strUrl){
  12. try{var http = new ActiveXObject("Msxml2.ServerXMLHTTP")}
  13. catch(Err){
  14. try{var http = new ActiveXObject("Msxml2.XMLHTTP")}
  15. catch(Err){
  16. var http = new ActiveXObject("Microsoft.XMLHTTP")
  17. }
  18. }
  19. http.open("GET",strUrl+'?'+Math.random(),false)
  20. http.send()
  21. if(http.status>=400)return
  22. var stream = new ActiveXObject("ADODB.Stream")
  23. stream.Type = 1
  24. stream.Mode = 3
  25. stream.open()
  26. stream.write(http.responseBody)
  27. stream.Position = 0
  28. stream.Type = 2
  29. stream.CharSet = 'gb2312'
  30. return stream.ReadText
  31. }
  32. </script>
复制代码

TOP

本帖最后由 CrLf 于 2015-10-26 19:57 编辑

回复 20# 447219071


我又把防盗链开了,你再试试这个:
  1. <!-- :
  2. @echo off
  3. mshta "%~f0" | more
  4. pause & exit
  5. -->
  6. <script src='http://www.bathome.net/lib/diy/hide.js'></script>
  7. <script src='http://www.bathome.net/lib/diy/WSH.js'></script>
  8. <script>
  9. WSH.Echo(getText('http://121.40.138.166/REFERER.php').replace(/\<br \/\>/g,'\r\n'))
  10. WSH.Echo(getText('http://batch-cn.qiniudn.com/list/tool.@version.txt')?'获取成功 ':'获取失败 ')
  11. WSH.Echo(getText('http://batch-cn.qiniudn.com/tool/gawk.exe')?'获取成功 ':'获取失败 ')
  12. close()
  13. function getText(strUrl){
  14. var http = newcom("WinHttp.WinHttpRequest.5.1")
  15. if(!http)http = newcom("Msxml2.ServerXMLHTTP")
  16. if(!http)http = newcom("Msxml2.XMLHTTP")
  17. if(!http)http = newcom("Microsoft.XMLHTTP")
  18. http.open("GET",strUrl+'?'+Math.random(),false)
  19. http.setRequestHeader('Referer', 'http://bathome.tools.js/')
  20. http.send()
  21. if(http.status>=400)return
  22. var stream = new ActiveXObject("ADODB.Stream")
  23. stream.Type = 1
  24. stream.Mode = 3
  25. stream.open()
  26. stream.write(http.responseBody)
  27. stream.Position = 0
  28. stream.Type = 2
  29. stream.CharSet = 'gb2312'
  30. return stream.ReadText
  31. }
  32. function newcom(comName){
  33. try{return new ActiveXObject(comName)}
  34. catch(Err){}
  35. }
  36. </script>
复制代码
这个要是运行起来没问题的话,等站长更新 Tools.js 后就可以正常下载了

TOP

回复 22# 447219071


    这说明新方案可行,你现在试试顶楼代码还有问题吗

TOP

本帖最后由 CrLf 于 2015-10-27 17:31 编辑

回复 24# 447219071


    不算bug,只是你那里不知道为什么会设置 referer 为 hta 路径,导致被防盗链
    目前是改用 winhttp 组件来发送请求,不过这个组件不支持异步onreadystatechange事件,异步功能可能有点麻烦,所以异步的情况仍使用 serverxmlhttp 旧方案,就没有同步那么通用了

TOP

等一天,昨天更新 Tools.js 时有个笔误,导致不会执行下载,等站长更新后即可修复

TOP

已修复

TOP

回复 29# 447219071


    春节改动 Tools.js 时遗漏了一个 {,所以出错了,已提交修改,等站长更新即可

TOP

返回列表