У меня проблемы с Интернетом, и я хотел создать фоновый скрипт, который устанавливает постоянный пинг для моего маршрутизатора и Интернета, чтобы я мог отслеживать частоту разрыва соединения.
Что мне удалось сделать, так этосоздать пакетный файл, который выполняет постоянный пинг для моего маршрутизатора и Интернета, получает время отклика, а затем создает вывод в консоли, а также файл CSV с несколькими полями, такими как время пинга состояния (т. е. успешный пинг или сбой),дата пинга и т. д.
У меня проблема в том, что у меня не выдается код, если соединение обрывается, и я думаю, это потому, что введенная мною переменная %errorlevel%
не работает из-за прерывания вывода пингаи хранится в переменной, но я могу ошибаться, и именно поэтому я здесь объясняю свою проблему.
Я пробовал несколько различных методов, но не могу найти тот, где я могу сохранить время ответа в переменной Ион должен обеспечить правильный уровень ошибки, чтобы перейти к выводу правильных данных с одного и того же пинга
Кажется, сейчас я могу заставить его сделать только одно:
@ECHO OFF
@SETLOCAL
set internetAddress=8.8.8.8
set routerAddress=192.168.1.0
set speed=2
set filename=C:\PingTest\PingResults\PingTest_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.csv
echo Type, Status, Time, Date, ms >> %filename%
echo off
:internetstart
set currentTime=%time:~0,2%:%time:~3,2%:%time:~6,2%
set currentDate=%date:~-10,2%/%date:~-7,2%/%date:~-4,4%
for /F "tokens=7 delims==< " %%G in ('
ping -4 -n 1 %internetAddress%^|findstr /i "TTL="') do (
set ims=%%G
if %errorlevel% == 0 goto :internetSuccess
if not %errorlevel% == 0 goto :internetFail
)
:internetSuccess
echo internet = success @ %ims% - %currentTime% %currentDate%
echo internet, success, %currentTime%, %currentDate%, %ims% >> %filename%
PING localhost -n %speed% >NUL
goto :routerstart
:internetFail
set ims=n/a
echo internet = failure @ %ims% - %currentTime% %currentDate%
echo internet, failure, %currentTime%, %currentDate%, %ims% >> %filename%
PING localhost -n %speed% >NUL
goto :routerstart
:routerstart
for /F "tokens=7 delims==< " %%A in ('
ping -4 -n 1 %routerAddress%^|findstr /i "TTL="') do (
set rms=%%A
if %errorlevel% == 0 goto :routerSuccess
if not %errorlevel% == 0 goto :routerFail
)
:routerSuccess
echo router = success @ %rms% - %currentTime% %currentDate%
echo router, success, %currentTime%, %currentDate%, %rms% >> %filename%
PING localhost -n %speed% >NUL
goto :internetstart
:routerFail
set rms=n/a
echo router = failure @ %rms% - %currentTime% %currentDate%
echo router, failure, %currentTime%, %currentDate%, %rms% >> %filename%
PING localhost -n %speed% >NUL
goto :internetstart
Ожидаемые результаты в файле CSV:
Если ping
успешно:
|TYPE | STATUS |TIME | DATE | MS |
|internet | success | 00:00:00 | 31/12/9999 | 7ms|
|router | success | 00:00:00 | 31/12/9999 | 1ms|
Если ping
не удалось:
|TYPE | STATUS |TIME | DATE | MS |
|internet | failure | 00:00:00 | 31/12/9999 | n/a|
|router | failure | 00:00:00 | 31/12/9999 | n/a|
Текущие результаты:
Если ping
успешно:
|TYPE | STATUS |TIME | DATE | MS |
|internet | success | 00:00:00 | 31/12/9999 | 7ms|
|router | success | 00:00:00 | 31/12/9999 | 1ms|
Если ping
не удается:
|TYPE | STATUS |TIME | DATE | MS |
|internet | success | 00:00:00 | 31/12/9999 | 7ms|
|router | success | 00:00:00 | 31/12/9999 | 7ms|