
标题: [网络连接] 批处理如何根据TRACERT命令的结果判断网络通断?(急) [打印本页]
作者: tgzourb 时间: 2013-8-30 14:55 标题: 批处理如何根据TRACERT命令的结果判断网络通断?(急)
我想使用TRACERT查找TRACERT后一个IP地址是否存在判断网络是否通与不通。有知道批处理怎么写不。我试过很多种方法都不成功。
作者: HAT 时间: 2013-8-30 15:30
你试了哪几个方法,请把详细步骤贴出来。
作者: tgzourb 时间: 2013-8-30 15:40
回复 2# HAT
TRACERT结果输出到txt文件中,再使用filed命令去查找
tracert -d %f% >>TRACER.TXT
set z=%f%
if &find H:\测试\TRACER.TXT "10.188.128.17"=="10.188.128.17" (echo %f% 联通线路通信正常 ) else (echo %f% 联通线路通信不正常) >> IPList.txt
if &find H:\测试\TRACER.TXT "10.188.128.17"=="10.188.128.17" (echo %f% 联通线路通信正常 ) >> IPList.txt else goto :speaker
if &find H:\测试\TRACER.TXT=="10.188.129.17" (echo %f% 联通线路中断且电信线路正常 ) goto :speaker else
还有就是使用变量,但是变量后面好像不能有命令吧。
@set /a y=type %x% |filed %h%
作者: HAT 时间: 2013-8-30 16:58
回复 3# tgzourb
你这段代码看着不像是BAT的语法。
请把TRACER.TXT的内容贴出来,然后详细描述一下如何判断。
作者: tgzourb 时间: 2013-8-30 17:29
回复 4# HAT
我们单聊聊
作者: PowerShell 时间: 2013-8-30 19:42
试试powershell
----------保存为trace-route2.ps1------------- function Trace-Route
- {
- param(
- # The URL to trace
- [Parameter(Mandatory=$true)]
- [Uri]$Url,
- # The timeout for the request, in milliseconds
- [Timespan]$Timeout = "0:0:0.25",
- # The maximum number of hops for the trace route
- [Int]$MaximumHops = 32
- )
-
- process {
- Invoke-Expression "tracert -w $($timeOut.TotalMilliseconds) -h $MaximumHops $url" |
- Where-Object {
- if ($_ -match "[.+]") {
- $destination
- try {
- $destination = [IpAddress]$_.Split("[]",[StringSplitOptions]"RemoveEmptyEntries")[-1]
- } catch {
- return $false
- }
- }
- $true
- } |
- Where-Object {
- if ($_ -like "*Request timed out.*") {
- throw "Request timed Out"
- }
- return $true
- } |
- Foreach-Object {
- if ($_ -like "*ms*" ) {
- $chunks = $_ -split " " | Where-Object { $_ }
- $destAndip = $chunks[-1]
- $dest, $ip = $destAndip.Replace("[", "").Replace("]","") -split " "
-
- if (-not $ip) {
- $ip = $dest
- $dest = ""
- }
-
- $ip = @($ip)[0].Trim() -as [IPAddress]
-
-
- if ($chunks[1] -eq '*' -and $chunks[2] -eq '*' -and $chunks[3] -eq '*') {
- Write-Error "Request Timed Out"
- return
- }
- $trace = New-Object Object
- $time1 = try { [Timespan]::FromMilliseconds($chunks[1].Replace("<","").Replace(" ms", ""))} catch {}
- $time2 = try { [Timespan]::FromMilliseconds($chunks[1].Replace("<","").Replace(" ms", ""))} catch {}
- $time3 = try { [Timespan]::FromMilliseconds($chunks[1].Replace("<","").Replace(" ms", ""))} catch {}
- $trace |
- Add-Member NoteProperty HopNumber ($chunks[0].Trim() -as [uint32]) -PassThru |
- Add-Member NoteProperty Time1 $time1 -PassThru |
- Add-Member NoteProperty Time2 $time2 -PassThru |
- Add-Member NoteProperty Time3 $time3 -PassThru |
- Add-Member NoteProperty Ip $ip -PassThru |
- Add-Member NoteProperty Host $dest -PassThru |
- Add-Member NoteProperty DestinationUrl $url -PassThru |
- Add-Member NoteProperty DestinationIP $destination -PassThru
-
- }
- }
- }
- }
-
-
- Trace-Route $args[0]
复制代码
---------------保存为 test.ps1---------------- $script:脚本存储路径 = Split-Path -Parent $myinvocation.mycommand.path
- $Env:Path+=";$script:脚本存储路径;"
- $sapi = New-Object -COM Sapi.SpVoice
-
-
- $tracert结果 = (e:\abc\trace-route2.ps1 www.163.com).ip.ipaddresstostring # 你文档保存的路径要指对
- write-host "返回ip为:`n"
- $tracert结果
-
- if ( $tracert结果 -contains "123.125.34.30") # 这里写你要判断的ip
- {
- $sapi.Speak("报告局长!联通线路通信正常")
- }
- else
- {
- $sapi.Speak("报告处长!联通线路中断且电信线路正常")
- }
复制代码
在powershell中运行这个test.ps1
作者: PowerShell 时间: 2013-9-4 11:44
效果如何了? 哪行 哪不行?
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |