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

[网络连接] 批处理怎么检测一个网页能否打开?

[复制链接]
发表于 2017-5-9 13:08:45 | 显示全部楼层 |阅读模式
我想要一个批处理检测网站的一个页面能不能打开,不能打开就给出提示。

举个例子,如 http://www.163.com  当这个网站的首页打不开就提示打不开。

注意:不是检测服务器打开不,有时候服务器是好的,能ping通。但网站故障网页会打不开

类似如下面:
  1. @echo off
  2. ping -n 1 www.163.com 1>nul  2>nul&&echo 服务器连接正常||echo 服务器连接不正常
  3. pause
复制代码
这个是检测服务器连接。我想要检测页面是否正常打开。

具体有思路是找到网页中的某个特定字符串,如“网易”,就证明可以打开。否则就打不开页面。但我不知道怎么实现

请高手指导一下,谢谢。
发表于 2017-5-9 13:44:19 | 显示全部楼层
  1. curl -I "http://www.163.com"
复制代码
判断一下HTTP状态是不是200
 楼主| 发表于 2017-5-9 14:33:12 | 显示全部楼层
本帖最后由 zb848 于 2017-5-9 16:40 编辑
判断一下HTTP状态是不是200
ShowCode 发表于 2017-5-9 13:44




这个不对啊

在批处理中怎么接收这个返回码?


能不能写个全的批处理,谢谢!
发表于 2017-5-9 16:43:10 | 显示全部楼层
回复 3# zb848
  1. @echo off
  2. for /f %%i in ('curl -so /dev/null -w %%{http_code} http://www.163.com') do (
  3.     set ret=%%i
  4. )
  5. if %ret% equ 200 (
  6.     echo 是200
  7. ) else (
  8.     echo 不是200
  9. )
  10. pause
复制代码
发表于 2017-5-9 17:00:38 | 显示全部楼层
回复 2# ShowCode


    有没有口能是 304
 楼主| 发表于 2017-5-9 17:07:21 | 显示全部楼层
回复  zb848
ShowCode 发表于 2017-5-9 16:43



十分感谢!
发表于 2017-5-9 19:41:12 | 显示全部楼层
回复 5# CrLf


    有的话,应该检测304之后的页面。
 楼主| 发表于 2017-5-10 08:15:04 | 显示全部楼层
本帖最后由 zb848 于 2017-5-10 08:22 编辑

现在又遇到 个问题

我有一个页面,http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html
(注:这是个内网地址。外网是无法访问的)
这个页面地址含有%字符。

  1. curl -I -m 10 -o /dev/null -s -w %{http_code}  http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html
复制代码
返回的是200

可是用你的代码
  1. @echo off
  2. for /f %%i in ('curl -so /dev/null -w %%{http_code} http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html') do (
  3.     set ret=%%i
  4. )
  5. if %ret% equ 200 (
  6.     echo 是200
  7. ) else (
  8.     echo 不是200
  9.     echo 是%ret%
  10. )
  11. pause
复制代码
返回的总是500000

我试着将地址http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html     中的%改成%%也是500000。将%2F改成/,%3A改成:结果返回302.

请问题出在那?谢谢
发表于 2017-5-10 09:44:09 | 显示全部楼层
回复 8# zb848


你用了SSO单点登录吧,它会发生302重定向,正常的。

能直接访问这个吗:
http://portal.hngs.tax.cn/welcome.html
发表于 2017-5-10 10:01:24 | 显示全部楼层
curl 应该也可以设置跟随转。
 楼主| 发表于 2017-5-10 10:18:13 | 显示全部楼层
本帖最后由 zb848 于 2017-5-10 10:21 编辑

回复 9# ShowCode



访问这个地址,http://portal.hngs.tax.cn/welcome.html

也是跳到这个地址http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html

用你的代码curl也是302

可能是语句中的%有问题,怎么解决
 楼主| 发表于 2017-5-10 10:22:41 | 显示全部楼层
curl 应该也可以设置跟随转。
codegay 发表于 2017-5-10 10:01



怎么设置跟随转?
发表于 2017-5-10 10:32:43 | 显示全部楼层
回复 12# zb848


    -L, --location       Follow redirects (H)
然而这个应该不能处理用 js 控制的跳转
发表于 2017-5-10 10:59:45 | 显示全部楼层
回复 8# zb848


你自己的curl命令保存到bat文件里面能得到200吗?分别试试:

test1.bat
  1. curl -I -m 10 -o /dev/null -s -w %{http_code}  http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html
  2. pause
复制代码
test2.bat
  1. curl -I -m 10 -o /dev/null -s -w %%{http_code}  http://dddl.hngs.tax.cn/js_sso_server/login?service=http%%3A%%2F%%2Fportal.hngs.tax.cn%%2Fwelcome.html
  2. pause
复制代码
 楼主| 发表于 2017-5-10 11:19:58 | 显示全部楼层
回复  zb848


你自己的curl命令保存到bat文件里面能得到200吗?分别试试:

test1.battest2.bat
ShowCode 发表于 2017-5-10 10:59





单独在cmd中运行第一个返回200,第二个返回302




在批处理文件中运行批处理报错



运行下面代码
  1. @echo off
  2. for /f %%i in ('curl -so /dev/null -w %%{http_code} http://dddl.hngs.tax.cn/js_sso_server/login?service=http%3A%2F%2Fportal.hngs.tax.cn%2Fwelcome.html') do (
  3.     set ret=%%i
  4. )
  5. if %ret% equ 200 (
  6.     echo 是200
  7. ) else (
  8.     echo 不是200
  9.     echo 是%ret%
  10. )

  11. echo.

  12. @echo off
  13. for /f %%p in ('curl -so /dev/null -w %%{http_code} http://dddl.hngs.tax.cn/js_sso_server/login?service=http%%3A%%2F%%2Fportal.hngs.tax.cn%%2Fwelcome.html') do (
  14.     set ret2=%%p
  15. )
  16. if %ret2% equ 200 (
  17.     echo 是200
  18. ) else (
  19.     echo 不是200
  20.     echo 是%ret2%
  21. )

  22. pause
复制代码
结果都是50000

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 20:20 , Processed in 0.019913 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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