日常潜水-20161013-进一步细化ping IP地址结果导出成csv文件

话不多说,直接po代码。


程序代码
  • C:\Schedule.bat
at 17:10 /every:M,T,W,Th,F,S,Su cmd /c C:\pingScheme.vbs
pause
  • C:\pingScheme.vbs
'引用函数  
Const conErr = -2  
Function Ping(ByVal Server)  
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  
'过程说明:  
' 1)   原型 Ping(ByVal 服务器)  
' 2)    ErrLevel返回值:  
'  
'    |值          |标志        |描述  
'     -1          True         网络畅通  
'      0          False        网络有误  
'     -2          conErr       网址为空  
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  
    Dim WshShell, intState, Args  
    If IsEmpty(Server) Then  
        Ping = conErr : Exit Function  
    End If  
    Args = " -n 2"  
    Set WshShell = WScript.CreateObject("WScript.Shell")  
    intState = WshShell.run ("ping.exe " & Server & Args, 4, True)  
    If intState = 0 Then  
        Ping = True  
    Else  
        Ping = False  
    End If  
    Set WshShell = Nothing  
End Function

Function pingNet(ByVal Server)
    Dim WshShell, pingShell
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set pingShell = WshShell.exec("cmd /c ping www.baidu.com")
    pingNet = pingShell.StdOut.ReadAll()
    Set pingShell = Nothing
    Set WshShell = Nothing
End Function

Function betweenString(ByVal sourceString, ByVal leftString, ByVal rightString)
    dim tempString, tempArray
    tempArray = split(sourceString, leftString)
    tempString = tempArray(1)
    tempArray = split(tempString, rightString)
    betweenString = tempArray(0)
End Function

Function cleanOut(ByVal sourceInfo)
    dim alreadySentNum, lostNum, averageNum, lostRate
    alreadySentNum = betweenString(sourceInfo, "已发送 = ", ",")
    lostNum = betweenString(sourceInfo, "丢失 = ", " (")
    averageNum = betweenString(sourceInfo, "平均 = ", chr(13))
    lostRate = betweenString(sourceInfo, "(", "% 丢失")
    cleanOut = array(alreadySentNum, lostNum, averageNum, lostRate&"%")
End Function

dim objFSO,objFile,strline,pingResult,cleanOutResult
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objFile = objFSO.OpenTextFile("C:\in.txt", 1)  
Currentdate=year(Now)&"-"&Month(Now)&"-"&day(Now)  
Set writeObject = objFSO.OpenTextFile("C:\log-"& Currentdate &".csv", 2, true) 
writeObject.writeline("IP/host,ping包数,丢包数,平均延时,丢包率") 
do  until objFile.atendofstream  
    strline=objFile.readline
    pingResult = pingNet(strline)
    'msgbox strline & " " & pingResult 
    cleanOutResult = cleanOut(pingResult)
    'msgbox cleanOutResult(0)&" "&cleanOutResult(1)&" "&cleanOutResult(2)&" "&cleanOutResult(3)
    writeObject.writeline(strline & "," & cleanOutResult(0) & "," & cleanOutResult(1) & "," & cleanOutResult(2) & "," & cleanOutResult(3))
loop
objFile.close
writeObject.close
set objFSO=nothing  
  • C:\in.txt
www.baidu.com
blog.csdn.net

Last but not least, 对于自己还在用vbs做脚本,我表示,朕很自豪!


特别记录

一个自作聪明瞎调用导致的bug==

runas /profile /user:administrator "cmd /c start C:\pingScheme.vbs"
pause

简直天真!!


程序结果

测试下来,每天定期备份!

就是这么天衣无缝!

Advance使用手册
  • 使用基本说明

    1. 注意一定要放在C:\目录下,程序代码这里定死了,因为需求上说随意,我就随意了一下。
    2. 所有需要ping的条目保存在了这个txt下。
    3. 需要修改定时脚本运行的时间,可以进入Schedule.bat中进行相应时间的修改。
    4. 程序正确执行后,将以csv格式做定期保存,在如图所示的c:\目录下。
    5. 注意一定要以管理员身份运行Schedule.bat!否则,会报有关权限问题的错误。

    简直神勇无敌啊!

  • at命令配置定时器问题

    1. 以管理员身份运行cmd
    2. 可在cmd下查看/删除已有的定时任务
    3. 重复执行之更改了时间的schedule.bat脚本,可能导致定时器过
      多,这个时候,可以通过查看/删除相应的定时任务,重新配置任务。

    at定时器调度命令

  • ping条目的输入文件

    ping条目的输入文件革史

  • Schedule.bat时间更改执行

    Schedule.bat中如何修改执行时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值