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

[文件操作] 【已解决】批处理+JS组合下载wget程序无效

前段时间,有大侠帮我解决了批处理配合js实现自动下载wget程序到本地系统.
当时中间的电脑确实实现了,但今天到左右两边的电脑测试就通不过了
先提供下载代码
  1. <!-- :
  2. @echo off
  3. mshta "%~f0"
  4. goto run
  5. -->
  6. <script src=http://bbs.bathome.net/lib/diy/hide.js></script>
  7. <script src=http://bbs.bathome.net/lib/diy/Tools.js></script>
  8. <script>
  9. Tools.get('wget','c:/windows/system32')
  10. </script>
复制代码
然后出现如下图所示错误提示:

如果出现这种情况,是不是官方的JS有缺陷,还是我本身的电脑缺少什么组件,又怎么解决呢?请大侠指教!

都重新装了IE8的

网页能读取这个列表吗: 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

回复 2# CrLf


   能直接读取这个TXT

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

win7 x64 IE11  运行一楼代码正常。

TOP

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

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

TOP

本帖最后由 447219071 于 2015-10-24 19:56 编辑

回复 4# CrLf


    我的系统是XP SP3的
刚试了这个,没有错误提示
返回结果为:
网址为http://batch-cn.qiniudn.com/list/tool.txt?0.7521945891672119
httpbect
staus=403
网址为http://batch-cn.qiniudn.com/list ... ?0.4043633657653702
http:obect
staus=403
  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>
复制代码
这个能配合下载wget.exe到本地c:\windows\syste32文件夹内么

TOP

回复 7# 447219071


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

TOP

回复 8# CrLf


    返回结果为:
返回结果为:
网址为http://batch-cn.qiniudn.com/list/tool.txt?0.7521945891672119
httpbject
status=403
网址为http://batch-cn.qiniudn.com/list ... ?0.4043633657653702
http:object
status=403

TOP

回复 9# 447219071


    现在试试

TOP

回复 10# CrLf


    网址为http://batch-cn.qiniudn.com/list/tool.txt?0.6382176056701442
httpbject
status=403
网址为http://batch-cn.qiniudn.com/list ... 0.23986206796689885
http:object
status=403

TOP

回复 11# 447219071


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

TOP

回复 12# CrLf


    网址为http://batch-cn.qiniudn.com/list/tool.txt?0.6527020354398203
httpbject
status=200
size=41021
网址为http://batch-cn.qiniudn.com/list ... @0.5713456774284609
http:object
status=200
size=41668

TOP

回复 13# 447219071


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

TOP

回复 14# CrLf


    果然可以了,难道是你的这个代码起作用了?
  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>
复制代码
如果是这样,是不是还要配合这个先才能适合我的这个XP SP3系统?
请问怎么精简合成呢?》

TOP

返回列表