[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] 批处理如何根据TRACERT命令的结果判断网络通断?(急)

我想使用TRACERT查找TRACERT后一个IP地址是否存在判断网络是否通与不通。有知道批处理怎么写不。我试过很多种方法都不成功。

你试了哪几个方法,请把详细步骤贴出来。

TOP

回复 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%

TOP

回复 3# tgzourb


你这段代码看着不像是BAT的语法。
请把TRACER.TXT的内容贴出来,然后详细描述一下如何判断。

TOP

回复 4# HAT


    我们单聊聊

TOP

试试powershell
----------保存为trace-route2.ps1------------
  1. function Trace-Route
  2. {
  3.    param(
  4.    # The URL to trace
  5.    [Parameter(Mandatory=$true)]
  6.    [Uri]$Url,
  7.    # The timeout for the request, in milliseconds
  8.    [Timespan]$Timeout = "0:0:0.25",
  9.    # The maximum number of hops for the trace route
  10.    [Int]$MaximumHops = 32
  11.    )
  12.    process {
  13.        Invoke-Expression "tracert -w $($timeOut.TotalMilliseconds) -h $MaximumHops $url" |
  14.            Where-Object {
  15.                if ($_ -match "[.+]") {
  16.                    $destination
  17.                    try {
  18.                        $destination = [IpAddress]$_.Split("[]",[StringSplitOptions]"RemoveEmptyEntries")[-1]
  19.                    } catch {
  20.                        return $false
  21.                    }
  22.                }
  23.                $true
  24.            } |
  25.            Where-Object {
  26.                if ($_ -like "*Request timed out.*") {
  27.                    throw "Request timed Out"
  28.                }
  29.                return $true
  30.            } |
  31.            Foreach-Object {
  32.                if ($_ -like "*ms*" ) {
  33.                    $chunks = $_ -split "  " | Where-Object { $_ }
  34.                    $destAndip = $chunks[-1]
  35.                    $dest, $ip = $destAndip.Replace("[", "").Replace("]","") -split " "
  36.                    if (-not $ip) {
  37.                        $ip = $dest
  38.                        $dest = ""
  39.                    }
  40.                    $ip = @($ip)[0].Trim() -as [IPAddress]
  41.                    if ($chunks[1] -eq '*' -and $chunks[2] -eq '*' -and $chunks[3] -eq '*') {
  42.                        Write-Error "Request Timed Out"
  43.                        return
  44.                    }
  45.                    $trace = New-Object Object
  46.                    $time1 = try { [Timespan]::FromMilliseconds($chunks[1].Replace("<","").Replace(" ms", ""))} catch {}
  47.                    $time2 = try { [Timespan]::FromMilliseconds($chunks[1].Replace("<","").Replace(" ms", ""))} catch {}
  48.                    $time3 = try { [Timespan]::FromMilliseconds($chunks[1].Replace("<","").Replace(" ms", ""))} catch {}
  49.                    $trace |
  50.                        Add-Member NoteProperty HopNumber ($chunks[0].Trim() -as [uint32]) -PassThru |
  51.                        Add-Member NoteProperty Time1 $time1 -PassThru |
  52.                        Add-Member NoteProperty Time2 $time2 -PassThru |
  53.                        Add-Member NoteProperty Time3 $time3 -PassThru |
  54.                        Add-Member NoteProperty Ip $ip -PassThru |
  55.                        Add-Member NoteProperty Host $dest -PassThru |
  56.                        Add-Member NoteProperty DestinationUrl $url -PassThru |
  57.                        Add-Member NoteProperty DestinationIP $destination -PassThru
  58.                }
  59.            }
  60.    }
  61. }
  62. Trace-Route $args[0]
复制代码
---------------保存为 test.ps1---------------
  1. $script:脚本存储路径 = Split-Path -Parent   $myinvocation.mycommand.path
  2. $Env:Path+=";$script:脚本存储路径;"
  3. $sapi = New-Object -COM Sapi.SpVoice
  4. $tracert结果 = (e:\abc\trace-route2.ps1 www.163.com).ip.ipaddresstostring  # 你文档保存的路径要指对
  5. write-host "返回ip为:`n"
  6. $tracert结果
  7. if ( $tracert结果 -contains "123.125.34.30") # 这里写你要判断的ip
  8. {
  9. $sapi.Speak("报告局长!联通线路通信正常")
  10. }
  11. else
  12. {
  13. $sapi.Speak("报告处长!联通线路中断且电信线路正常")
  14. }
复制代码
在powershell中运行这个test.ps1
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

效果如何了? 哪行 哪不行?
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

返回列表