Войти

Показать полную графическую версию : Определить компьютер в сети, до которого самый длинный маршрут


namsma
24-02-2017, 00:23
Как вывести максимальное значение метрики(последняя колонка из вывода команды route print)?
Файл - .bat.

То eсть нужно опрeдeлить компьютeр в сeти, до которого самый длинный маршрут.
Буду благодарен за помощь. Если кто-то осилит, буду очень признателен.

Скрин
http://freshall.com/img/2017-02/27/qmnsvs7q3d2so6a41dh5hs54b.png

namsma
27-02-2017, 15:14
изменил условия на более понятные

megaloman
27-02-2017, 19:11
namsma, для каких сетевых адресов? Вы показали скриншот. Что по этому скриншоту должно быть в ответе?

Elven
28-02-2017, 12:07
megaloman, если моя быть понимать правильно нужно найти максимальное значение метрики из вывода route print и вывести строки, у которых метрика будет равна этому значению.
в ответе должен получится вывод, судя по скриншоту, соответсвующий чему-то вот такому:
route print | findstr 306$
но это в том случае, если максимальное значение метрики 306. namsma, я так понимаю проблема именно определить какое значение является максимальным, нет?

alpap
28-02-2017, 16:28
так?

@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

Iska
28-02-2017, 19:19
Может быть, будет проще сюда sort.exe привязать?

megaloman
28-02-2017, 20:54
Iska, ИМХО, Наверное лучше. Но еще надо отсеять ненужные значения. По моему, сетевой адрес 255.255.255.255 не интересен. Не хватает данных для решения. ИМХО, надо искать не только максимальную метрику, но и отсеивать ненужные значения, плюс не ясно: что делать, когда максимальные метрики встречаются несколько раз.

Iska
28-02-2017, 21:01
Не хватает данных для решения. »
Соглашусь. Именно так.

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