Показать полную графическую версию : Определить компьютер в сети, до которого самый длинный маршрут
Как вывести максимальное значение метрики(последняя колонка из вывода команды route print)?
Файл - .bat.
То eсть нужно опрeдeлить компьютeр в сeти, до которого самый длинный маршрут.
Буду благодарен за помощь. Если кто-то осилит, буду очень признателен.
Скрин
http://freshall.com/img/2017-02/27/qmnsvs7q3d2so6a41dh5hs54b.png
изменил условия на более понятные
megaloman
27-02-2017, 19:11
namsma, для каких сетевых адресов? Вы показали скриншот. Что по этому скриншоту должно быть в ответе?
megaloman, если моя быть понимать правильно нужно найти максимальное значение метрики из вывода route print и вывести строки, у которых метрика будет равна этому значению.
в ответе должен получится вывод, судя по скриншоту, соответсвующий чему-то вот такому:
route print | findstr 306$
но это в том случае, если максимальное значение метрики 306. namsma, я так понимаю проблема именно определить какое значение является максимальным, нет?
так?
@echo off
setlocal enabledelayedexpansion
for /f "tokens=4,5" %%a in ('route print^|findstr /rc:" [0-9]*$"') do if !max! lss %%b set max=%%b& set "comp=%%a"
echo Максимальное число метрики: %max% для %comp%
pause>nul
Может быть, будет проще сюда sort.exe привязать?
megaloman
28-02-2017, 20:54
Iska, ИМХО, Наверное лучше. Но еще надо отсеять ненужные значения. По моему, сетевой адрес 255.255.255.255 не интересен. Не хватает данных для решения. ИМХО, надо искать не только максимальную метрику, но и отсеивать ненужные значения, плюс не ясно: что делать, когда максимальные метрики встречаются несколько раз.
Не хватает данных для решения. »
Соглашусь. Именно так.
megaloman
28-02-2017, 22:41
@Echo Off
cls
chcp 437 >nul
SetLocal EnableExtensions EnableDelayedExpansion
Call :InSort "%~dpnx0.txt"
Echo Network Destination Netmask Gateway Interface Metric
For /F "usebackq tokens=1,2,3,4,5,6 delims= " %%i In (`More "%~dpnx0.txt"^|Sort /R`) Do (
Set "SS= %%j" &Set "S=!SS:~-17!"
Set "SS= %%k" &Set "S=!S!!SS:~-17!"
Set "SS= %%l" &Set "S=!S!!SS:~-17!"
Set "SS= %%m" &Set "S=!S!!SS:~-17!"
Set "SS= %%n" &Set "S=!S!!SS:~-7!"
Echo !S!
)
Del "%~dpnx0.txt"
pause
goto :Eof
:InSort
>%1 (
Set /A Log=0
For /F "usebackq tokens=1,2,3,4,5,6 delims= " %%i IN (`route print -4`) DO (
If "%%j"=="" Set /A Log=0
If Not !Log! EQU 0 (
Set /a MM=10000+%%m
Echo !MM! %%i %%j %%k %%l %%m %%n
)
If "%%n"=="Metric" Set /A Log=1
)
)
goto :Eof@Echo Off
cls
chcp 437 >nul
SetLocal EnableExtensions EnableDelayedExpansion
Set /A Max=-1
Call :OutPrint "Max"
Echo Network Destination Netmask Gateway Interface Max Metric
Call :OutPrint "Max"
Pause
GoTo :Eof
:OutPrint
Set /A LMax=!%~1!
Set /A Log=0
For /F "usebackq tokens=1,2,3,4,5,6 delims= " %%i IN (`route print -4`) DO (
If "%%j"=="" Set /A Log=0
If Not !Log! EQU 0 (
If %LMax% LSS 0 (
If !%~1! LSS %%m Set /A %~1=%%m
) Else (
If %%m GEQ !%~1! (
Set "SS= %%i" &Set "S=!SS:~-17!"
Set "SS= %%j" &Set "S=!S!!SS:~-17!"
Set "SS= %%k" &Set "S=!S!!SS:~-17!"
Set "SS= %%l" &Set "S=!S!!SS:~-17!"
Set "SS= %%m" &Set "S=!S!!SS:~-11!"
Echo !S!
)
)
)
If "%%n"=="Metric" Set /A Log=1
)
goto :Eof]
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.