繁体   English   中英

windows cmd 批处理文件,用于 32 个 IP 的并行跟踪路由

[英]windows cmd batch file for parallel traceroute of 32 IPs

我在文件 tracerouteiplistA.txt 中有 32 个 IP

在名为 tracerouteScriptA.bat 的批处理文件的 for/while 循环中,

我想跟踪所有这些路由并将结果存储在 traceA.txt

如果 10. 可见,我想在 traceresponseA.txt 中写 0。 如果 172. 可见,则为 1,否则如果请求超时或失败,我想写 2。

我当前的代码如下 -

@echo off
cd C:\Users\Administrator\Desktop
FOR /F "usebackq delims=*" %%a in (tracerouteiplistA.txt) do (
tracert -h 3 "%%a" > traceA.txt
findstr /m "10." traceA.txt
if %errorlevel%==0 (echo "0" > traceresponseA.txt)
findstr /m "172." traceA.txt
if %errorlevel%==0 (echo "1" > traceresponseA.txt) else (echo "2" > traceresponseA.txt)                   
)

Powershell 解决方案:

#get all IP
$Result=Get-Content "c:\temp\tracerouteiplistA.txt" | foreach{

    #for every IP we do a traceroute
    Test-NetConnection $_ -TraceRoute | foreach{

    $Current=$_

    #one line by hop
    $_.TraceRoute | foreach{

            if ($_ -like "10.*")
            {
                $Analyse="0"
            }
            elseif ($_ -like "172.*")
            {
                $Analyse="1"
            }
            else
            {
               $Analyse="2"
            }

            #create an objet and send to output            
            [pscustomobject]@{
            IP=$Current.RemoteAddress
            HopIP=$_
            Analyse=$Analyse
            }
                                

         }

    }



} 

#result into file, we take the first result in priority order
$Result | sort Analyse | select Analyse -First 1 -ExpandProperty Analyse | Out-File "c:\temp\traceresponseA.txt"

#if you want look result
$Result

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM