中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » vbs 如何判断一个链接的有效性?
作者:
标题: vbs 如何判断一个链接的有效性? 上一主题 | 下一主题
25869
新手上路





积分 10
发帖 10
注册 2009-8-1
状态 离线
『楼 主』:  vbs 如何判断一个链接的有效性?

比如,要判断 www.baidu.com/img/baidu_logo.gif 是否有效或存在,变一下slore兄的代码,总是提示不通。

不知这个举一反三是不是用错了,请指教,多谢!

HOST = "."
TARGET = "www.baidu.com/img/baidu_logo.gif"
Set PingResults = GetObject("winmgmts:{impersonationLevel=impersonate}//" & _
        HOST & "/root/cimv2"). ExecQuery("SELECT * FROM Win32_PingStatus " & _
         "WHERE Address = '" + TARGET + "'")

For Each PingResult In PingResults
    If PingResult.StatusCode = 0 Then
        WScript.Echo "通"
    Else
        WScript.Echo "不通"
    End If
Next

2009-8-5 00:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

。。。

站点你可以ping……

URL你用HTTP对象,下载看看返回代码。。。



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2009-8-5 01:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
25869
新手上路





积分 10
发帖 10
注册 2009-8-1
状态 离线
『第 3 楼』:  

url="http://www.baidu.com/img/baidu_logo.gif"

Set xmlHTTP=createobject("Microsoft.XMLHTTP")
xmlhttp.open "GET", URL, False, False
xmlhttp.send
wscript.sleep 300
If xmlhttp.status=200 Then
   wscript.echo "ok"
else
   wscript.echo "no"
end if

不论什么链接,都提示 ok ,请问怎么改正?

2009-8-5 05:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『第 4 楼』:  

这个是因为一般网站都设置了一个 404 页面,当请求不存在的时候跳到这个错误页面,所以你的请求总是会成功的,但得到的返回却不是你想要的东西。

我帮你写了个代码,效率可能比较低,因为要下载请求资源进行验证,能判断返回的是不是资源文件(图片、声音、视频、压缩包等)。
'(P) 『据说是李先生』
on error resume next
msgYES = "指定资源存在。"
msgNO  = "指定的资源不存在。"

'URL 要写完整的
url="http://www.baidu.com/img/baidu_logo.gif"
Set xmlHTTP=createobject("Microsoft.XMLHTTP")
xmlhttp.open "GET", URL, false
xmlhttp.send
if err.number <> 0 then
flagText = "cn-dos.net"
else
flagText = left(xmlhttp.responseText, 1703)
set regex = new RegExp
regEx.Global = True
regex.pattern =  "^\s*"
flagText = regex.replace(flagText, "")
regex.pattern =  "^<.*>"
flagText = regex.replace(flagText, "cn-dos.net")
flagText = left(flagText, 10)
msgNO = msgNO & vbcrlf & "或者不是图片、声音、食品、程序、压缩文件类型文件。"
end if

If flagText <> "cn-dos.net" Then
   wscript.echo msgYES
else
   wscript.echo msgNO
end if
[ Last edited by qinchun36 on 2009-8-6 at 00:46 ]

附件 1: 验证.zip (2009-8-6 00:45, 618 bytes,下载次数: 28)
2009-8-5 06:26
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复
25869
新手上路





积分 10
发帖 10
注册 2009-8-1
状态 离线
『第 5 楼』:  

qinchun36兄,能否解释一下flagText 的作用?

2009-8-6 11:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by 25869 at 2009-8-6 11:53 AM:
qinchun36兄,能否解释一下flagText 的作用?

用来大致识别文件类型的。
我是将服务器返回的内容进行分析,因为这个例子中的目的是要图片,如果返回的是图片肯定不会是以 <****> 样式开头的,如果是这种就标记为 “cn-dos.net” ,否则就不动它,最后判断这个标志就知道是不是存在要的图片了。

2009-8-7 11:10
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: