找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 109220|回复: 30

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

[复制链接]
发表于 2015-10-24 16:23:48 | 显示全部楼层 |阅读模式
前段时间,有大侠帮我解决了批处理配合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的
发表于 2015-10-24 16:49:57 | 显示全部楼层
网页能读取这个列表吗: 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>
复制代码
 楼主| 发表于 2015-10-24 17:07:24 | 显示全部楼层
回复 2# CrLf


   能直接读取这个TXT
发表于 2015-10-24 17:46:53 | 显示全部楼层
本帖最后由 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>
复制代码
发表于 2015-10-24 18:54:50 | 显示全部楼层
win7 x64 IE11  运行一楼代码正常。
发表于 2015-10-24 19:10:05 | 显示全部楼层
本帖最后由 CrLf 于 2015-10-24 19:38 编辑

一种可能是 getText 得不到 tool.txt 的列表
另一种可能是你的 <script> 中包含 offline_Tools 属性,说明是离线使用,但运行时却无法在当前路径下找到 tool.txt
 楼主| 发表于 2015-10-24 19:45:29 | 显示全部楼层
本帖最后由 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文件夹内么
发表于 2015-10-24 19:54:39 | 显示全部楼层
回复 7# 447219071


    我是问你回显是什么。。。。。。。
 楼主| 发表于 2015-10-24 19:58:19 | 显示全部楼层
回复 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
发表于 2015-10-24 20:25:29 | 显示全部楼层
回复 9# 447219071


    现在试试
 楼主| 发表于 2015-10-24 20:50:03 | 显示全部楼层
回复 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
发表于 2015-10-24 20:57:40 | 显示全部楼层
回复 11# 447219071


    已关防盗链,现在试试看,要是还不行我也搞不懂什么原因了
 楼主| 发表于 2015-10-24 21:22:00 | 显示全部楼层
回复 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
发表于 2015-10-24 22:16:59 | 显示全部楼层
回复 13# 447219071


    果然是防盗链的原因,现在你再试试顶楼代码应该可以运行了。你们那是什么环境,怎么会这么奇葩
    防盗链就暂时关闭着吧,回头发现恶意下载的情况再开启
 楼主| 发表于 2015-10-25 23:08:47 | 显示全部楼层
回复 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系统?
请问怎么精简合成呢?》
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 15:25 , Processed in 0.020173 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表