;初始化数组 pinginfo := Object() ;建立函数 ping(pinginfo){ site := pinginfo["site"] ;赋值 RunWait, %ComSpec% /c ping -n 1 %site% >%A_Temp%ahk_ping.tmp, , Hide ;有cmd ping网址并保存到临时文件夹 FileRead, content, %A_Temp%ahk_ping.tmp ;读取整个文件到变量 StringReplace, content, content, `r, , All ;去除回车符 StringSplit, var, content, `n ;按换行分割 If content Contains 请求超时,Request timed out { pinginfo["msg"] = "请求超时" ;返回msg Return pinginfo ;返回数组 } If content Contains 找不到主机,could not find host { pinginfo["msg"] = "找不到主机" Return pinginfo ;返回数组 } Else { pinginfo["ip"] := RegExReplace(var3, "(来自|Reply from) (d{1,3}.d{1,3}.d{1,3}.d{1,3})[s的回复|]*: (字节|bytes)=d{1,3} (时间|time)[=<]d{1,3}ms TTL=d{1,3}","$2") ;正则替换 pinginfo["time"] := RegExReplace(var3, "(来自|Reply from) d{1,3}.d{1,3}.d{1,3}.d{1,3}[s的回复|]*: (字节|bytes)=d{1,3} (时间|time)[=<](d{1,3})ms TTL=d{1,3}","$4") pinginfo["ttl"] := RegExReplace(var3, "(来自|Reply from) d{1,3}.d{1,3}.d{1,3}.d{1,3}[s的回复|]*: (字节|bytes)=d{1,3} (时间|time)[=<]d{1,3}ms TTL=(d{1,3})","$4") pinginfo["msg"] := "正常" Return pinginfo ;返回数组 } } ;创建界面 gui, add, edit, x0 y0 w200 h400 vsites, gui, add, button, x0 y400 w200 h20 gok, 批量检测网址ping gui, Show, , 批量检测网址ping Return GuiClose: ExitApp ok: ;获取填写数据 GuiControlGet, sites IfInString, sites, `n StringSplit, var, sites, `n Else { var0 = 1 var1 = %sites% } t = %A_Now% ;写入标题 FileAppend, ip/网站`,状态`,IP`,响应时间`n, %t%.csv Loop { if A_Index > %var0% Break site = % var%A_Index% if site <> { pinginfo["site"] := site pinginfo := ping(pinginfo) ip := pinginfo["ip"] time := pinginfo["time"] site := pinginfo["site"] msg := pinginfo["msg"] FileAppend, %site%`,%msg%`,%ip%`,%time%`n, %t%.csv } } ;自动打开 Run, %t%.csv Return