Board logo

标题: [网络连接] 批处理不断的ping对方,返回结果,查看何时在线,何时掉线 [打印本页]

作者: wainh    时间: 2009-12-4 10:53     标题: 批处理不断的ping对方,返回结果,查看何时在线,何时掉线

一直想找这样的网络软件。但都找不出来,只能求助各位大大的批处理了。谢谢了,效果就是不断ping对方,再返回结果。
   如果可能,我希望的效果是:连接ping通两次,判定为在线,失败两次,判定为离线。最好在线跟离线后面都有跟时间(例如:在线时间为从**:**  离线时间**:**  在线时间**:**..........)
   本人工作有点涉及网管方面的,有谁有这方面的软件也请推荐一下。谢谢了
作者: a1my    时间: 2009-12-4 11:11     标题: 写个脚本就可以实现

ping 有这个参数 -c 可以写个判段就可以实现
作者: batman    时间: 2009-12-4 11:53

  1. @echo off&setlocal enabledelayedexpansion
  2. set "#0=在线"&set "#1=离线"
  3. :lp
  4. set /a _0=0,_1=0
  5. for /l %%a in (1,1,2) do (
  6.     ping /n 1 www.baidu.com>nul
  7.     set /a _!errorlevel!+=1
  8. )
  9. for %%a in (0 1) do if !_%%a! equ 2 set "str=!#%%a!:%time%"&goto next
  10. goto lp
  11. :next
  12. echo %str%&goto lp
复制代码

作者: wsjxwj    时间: 2009-12-4 14:52

原帖由 batman 于 2009-12-4 11:53 发表
@echo off&setlocal enabledelayedexpansion
set "#0=在线"&set "#1=离线"
:lp
set /a _0=0,_1=0
for /l %%a in (1,1,2) do (
    ping /n 1 www.baidu.com>nul
    set /a _!errorlevel!+=1
)
for %%a in ( ...



版主你的代码大概意思我是明白了,但是"_0=0,_1=0     _!errorlevel!+=1 中的这个"_"这个下划线在这里有什么作用?
作者: caruko    时间: 2009-12-4 15:01

_ 是为了跟_0 _1这2个变量匹配的...
如果errorlevel=0  那么 _!errorlevel! 是指 _0 这个变量
_0 是ping不通的次数 _1是ping通的次数
作者: wainh    时间: 2009-12-4 17:18

非常感谢啊。连超级版主都出来了。效果很好,很强大。短短的几行代码,功能真是强大啊,以后自己也要学习学习,把教程打印出来。到时望版主不吝赐教。

还有个不情之请,那个在线时间是否能精简点。效果如下:
第一次,第2次能ping成功。就显示当前时间,之后如果一直能成功,就不要显示了。
如果连ping两次都失败,就显示第2次失败的当前时间,之后如一直ping失败,亦不再显示。但如果连ping两次成功,就再显示成功的当前时间。就这样一路循环。
这样效果就更好了。当然,现在的样子已经有足够的功能了。再次感谢,非常谢谢。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2