Войти

Показать полную графическую версию : [решено] Тестирование сетки.


Страниц : 1 [2]

megaloman
19-10-2010, 11:07
Sub pingnet()
Begin = "N3" ' Клетка, с которой начинается просмотр адресов в таблице
N_Uzl = 1 ' Число подузлов, отлич на единицу в последнем октете (>0!!!)
i_Win = 1 ' 1 - видимое командное окно при пропинговке, 0 - не видимое
N_Ping = 8 ' Число запросов

Set WS = CreateObject("WScript.Shell")

ip = Range(Begin)
i = 0
Do While Len(Trim(ip)) <> 0
ipm = Split(ip, ".")
Range(Begin).Offset(i, 1) = "Тестирую ..."
Range(Begin).Offset(i, 2) = ""
Ret = WS.Run("cmd /C Ping -n " + CStr(N_Ping) + " " + ip, i_Win, True)

Msg = CStr(Date) + " " + CStr(Time)
Msg2 = ""
If Ret = 0 Then
Msg = Msg + " OK"
For j = 1 To N_Uzl
ip = CStr(ipm(0)) + "." + CStr(ipm(1)) + "." + CStr(ipm(2)) + "." + CStr(ipm(3) + j)
Ret = WS.Run("cmd /C Ping -n " + CStr(N_Ping) + " " + ip, i_Win, True)
Msg2 = Msg2 + ip
If Ret = 0 Then Msg2 = Msg2 + "-OK " Else Msg2 = Msg2 + "-Err "
Next
Else
Msg = Msg + " Err"
End If
Range(Begin).Offset(i, 1) = Msg
Range(Begin).Offset(i, 2) = Msg2

i = i + 1
ip = Range(Begin).Offset(i, 0)
Loop
End Sub
Мне было бы интересно знать, какие из моих сообщений Вы посчитали полезными для себя

a139st
19-10-2010, 12:29
Не смогли бы вы заново выложить код с данными изменениями,
У меня что то не получается.

a139st
19-10-2010, 15:48
Всё понятно и всё работает.
Большое спасибо за помощь!!!
Успехов Вам!

invisible88
28-10-2011, 13:34
У этих скриптов есть интересная особенность, при пинге узла от которого приходит не "превышен интервал ожидания для запроса", а "ответ от *.*.*.* заданный узел не доступен", в результат записывает ОК.

gremlintv2
22-01-2016, 17:24
Добрый день! Подскажите пожалуйста, а каким образом можно данный bat-файл приспособить к следующей задаче:
Есть контрольный файл в папке C:\111 с названием: "HTIN.txt"
В нем есть контрольные строки вида:
C:\222\000047675410000000011122015.XML:
C:\222\000070380710000000011122015.XML:
C:\222\000072491010000000011122015.XML:
C:\222\000072515710000000011122015.XML:

Есть папка C:\111 с файлами: "R22GA.txt" его содержимое:

C:\222\000047675410000000011122015.XML: 456
C:\222\000070380710000000011122015.XML: 213
C:\222\000072491010000000011122015.XML: 432

"R23GA.txt"его содержимое:

C:\222\000047675410000000011122015.XML: 987
C:\222\000072491010000000011122015.XML: 456

Нужно чтобы скрипт читал из папки C:\111\*.XML файлы
И если находил в них еквивалентную контрольному файлу строчку, то записывал результат следующим образом:
Содержимое "HTIN.txt" после обработки:

R22GA R23GA
C:\222\000047675410000000011122015.XML: 456 987
C:\222\000070380710000000011122015.XML: 213
C:\222\000072491010000000011122015.XML: 432 456
C:\222\000072515710000000011122015.XML:


Извините что морочу голову, но излазив все эти ваши интернеты так и не нашел достойного решения. И вот гляжу на этот скрипт по пингу сети и думаю "это ж мое", но как его правильно переделать под свою задачу знаний не хватает =(.

Я понимаю следующее:


@Echo off
setLocal EnableExtensions
rem здесь нужно подставить вместо даты и время на название файлов из папки C:\111
set tm=%time::=%
set tm=%tm:~0,-3%
set dt=%date:~8,2%%date:~3,2%%date:~0,2%

rem
for /f "UseBackQ tokens=1,*" %%A in ("%~n0.txt") do call :Ping %%A "%%B"
del /f "%~n0.old" >nul 2>nul
ren "%~n0.txt" *.old 2>nul
ren "%~n0.tmp" *.txt 2>nul
goto END

:Ping
set stat=Faild
if "%1"=="Date" echo Date %dt% %~2>>"%~n0.tmp"&exit /b
if "%1"=="Time" echo Time %tm% %~2>>"%~n0.tmp"&exit /b
rem а вместо команды ping нужно подставить команду которая будет проверять эквивалентность первого столбца в каждом файле со строкой в контрольном файлк и если они будут идентичными то подставлять значение из текущего по списку файла.
ping -n 1 %1 >nul 2>nul
if %ErrorLevel%==0 set stat=Ok
echo %1 %stat% %~2>>"%~n0.tmp"
exit /b

:END

Georgio
24-01-2016, 07:02
Я понимаю следующее... »



Не-а, нужен другой алгоритм:

@echo off

set "dir=C:\111"
set "control=HTIN.txt"
set "files=R*.txt"

pushd "%dir%"|| exit/b& set "t= "
set "y=%t%%t%%t%%t%%t%"
<"%control%">"%~dp0.tmp" (
for /f "tokens=1,2 delims=:" %%i in ('more') do @(
set "x=%%i:%%j:"
for /f "delims=" %%k in ('"2>nul dir/a-d/b "%files%"| sort"') do @(
if defined y (if defined z (call set "z=%%z%%%t%%%~nk") else set "z=%y%%%~nk")
for /f "tokens=3 delims=:" %%l in ('"<"%%k" find/i "%%i:%%j:""') do @(
for /f %%m in ("%%l") do @call set "x=%%x%%%t%%%m"
)
)|| call set "x=%%x%%%t% "
cmd/v/c "(if defined z echo.!z!)& echo.!x!"& set "x="& set "y="& set "z="
)
)& >nul move "%~dp0.tmp" "%control%"& popd

exit/b

.

gremlintv2
12-04-2016, 15:58
Georgio, огромное вам спасибо за помощь! Извините что поблагодарил только сейчас. Как говориться лучше поздно чем никогда. А не подскажете как решить такой вопрос:

@Echo off
setLocal EnableExtensions

set tm=%time::=%
set tm=%tm:~0,-3%
set dt=%date:~8,2%%date:~3,2%%date:~0,2%

for /f "UseBackQ tokens=1,*" %%A in ("%~n0.txt") do call :Ping %%A "%%B"
del /f "%~n0.old" >nul 2>nul
ren "%~n0.txt" *.old 2>nul
ren "%~n0.tmp" *.txt 2>nul
goto END

:Ping
set stat=Faild
if "%1"=="Date" echo Date %dt% %~2>>"%~n0.tmp"&exit /b
if "%1"=="Time" echo Time %tm% %~2>>"%~n0.tmp"&exit /b
ping -n 1 %1 >nul 2>nul
if %ErrorLevel%==0 set stat=arp -a %1
echo %1 %stat% %~2>>"%~n0.tmp"
exit /b
:END
Возможно ли в данном коде подставить в переменную stat макадрес?




© OSzone.net 2001-2012