Заказать сайт недорого. Создание сайта на базе системы управления контентом. Индивидуальный подход при создании сайта. Современный и красивый дизайн сайта. Удобная навигация на сайте.

palexa.pp.ua@gmail.com

(+380) 66 531 77 01 ; 67 301 39 26

Записать выполнение команды ping в файл со временем ? Как создать bat файл ?

Команда ping — утилита для проверки соединений в сети на основе TCP/IP. Чаще всего для обнаружения компьютера в сети мы используем команду ping в командной строке. Но если эта команда должна выполняться продолжительно время, возникает желание записать выполнение команды ping в файл со временем.

Linux - как записать выполнение в файл лог пинга (команда ping) с указанием времени отправки/получения пакета или Destination Host Unreachable ?

Записать выполнение команды ping в файл

Самый простой вариант, это выполнить команду:

ping -t 192.168.0.101 >> C:\logfile.log

Получим такой файл

Ответ от 192.168.0.101: число байт=32 время=3мс TTL=128
Превышен интервал ожидания для запроса.
Ответ от 192.168.0.101: число байт=32 время=36мс TTL=128

При этом если использовать одинарную стрелочку " > ", logfile.log будет перезаписываться, если двойную " >> " - дописываться.

Записать выполнение команды ping в файл со временем

Для этого выполним команду:

for /l %i in (0,0,1) do @cmd /c "echo.|set/p=%TIME:~0,8^%" >> c:\logfile.log & ping -n 1 192.168.0.101 | findstr "Превышен Ответ" >> c:\logfile.log & ping -n 2 localhost > nul

Получим такой файл

14:07:16  Ответ от 192.168.0.101: число байт=32 время=3мс TTL=128
14:07:17  Превышен интервал ожидания для запроса.
14:07:22  Превышен интервал ожидания для запроса.
14:07:27  Ответ от 192.168.0.101: число байт=32 время=117мс TTL=128
14:07:30  Ответ от 192.168.0.101: число байт=32 время=6мс TTL=128

Сразу отмечаю, что файл создаётся в кодировке 866 OEM - русская, поэтому открывать его лучше в программах AkelPad, Notepad++ или других подобных. Блокнот покажет абру кадабру там где кириллица

Создать bat файл и записать выполнение команды ping в файл со временем

Информация на сайте оказалась Вам полезной? Вы нашли ответ на вопрос?

Узнайте как поблагодарить меня

Нельзя называть *. bat файлы именами, совпадающими с любыми командами "ping.bat" ("ping.cmd").

Можно так: "пинг.bat" ("пинг.cmd")

Создать файл, например пинг.bat и обязательно сохранить в кодировке 866 OEM - русская

@>"C:\logfile.log" (
 for /l %%i in () do @>nul chcp 866& ping -n 1 192.168.0.101| findstr/i "Превышен Ответ"|(
 for /f "delims=" %%j in ('more') do @>nul chcp 866& cmd/v/c "echo.!time:~0^,8! %%j")
)

Получим такой файл

14:36:48 Ответ от 192.168.0.101: число байт=32 время=7мс TTL=128
14:36:49 Ответ от 192.168.0.101: число байт=32 время=40мс TTL=128
14:36:50 Ответ от 192.168.0.101: число байт=32 время=63мс TTL=128
14:36:52 Превышен интервал ожидания для запроса.
14:36:56 Превышен интервал ожидания для запроса.
14:37:00 Превышен интервал ожидания для запроса.
14:37:05 Ответ от 192.168.0.103: Заданный узел недоступен.
14:37:10 Ответ от 192.168.0.103: Заданный узел недоступен.
14:37:16 Ответ от 192.168.0.103: Заданный узел недоступен.
14:37:19 Ответ от 192.168.0.101: число байт=32 время=40мс TTL=128
14:37:20 Ответ от 192.168.0.101: число байт=32 время=3мс TTL=128

Если команда будет выполняться долго, например сутки, то анализировать такой лог будет довольно сложно.  Так что можно создать такой файл:

@>"C:\logfile.log" (
 for /l %%i in () do @>nul chcp 866& ping -n 1 192.168.0.101| findstr/i "Превышен Заданный"|(
 for /f "delims=" %%j in ('more') do @>nul chcp 866& cmd/v/c "echo.!time:~0^,8! %%j")
)

или так:

@>"C:\logfile.log" (
 for /l %%i in () do @>nul chcp 866& ping -n 1 192.168.0.101| findstr/i "Превышен интервал-Заданный узел"|(
 for /f "delims=" %%j in ('more') do @>nul chcp 866& cmd/v/c "echo.!time:~0^,8! %%j")
)

Получим вот такой файл, в который записываются только строки "Превышен интервал ожидания для запроса" и "Заданный узел недоступен"

15:37:22 Превышен интервал ожидания для запроса.
15:37:26 Превышен интервал ожидания для запроса.
15:37:29 Ответ от 192.168.0.103: Заданный узел недоступен.
15:37:32 Ответ от 192.168.0.103: Заданный узел недоступен.
15:37:35 Ответ от 192.168.0.103: Заданный узел недоступен.
15:38:50 Превышен интервал ожидания для запроса.
15:38:54 Превышен интервал ожидания для запроса.
15:38:58 Превышен интервал ожидания для запроса.
15:39:41 Ответ от 192.168.0.103: Заданный узел недоступен.
15:39:44 Ответ от 192.168.0.103: Заданный узел недоступен.
15:39:47 Ответ от 192.168.0.103: Заданный узел недоступен.

Если очень надо открывать файл logfile.log стандартным блокнотом, то изменяем кодировку в 3-й строке

...('more') do @>nul chcp 1251& cmd...

Комментарии   

0 #10 Алекс 08.06.2017 05:10
Спасибо огромное, все работает.
Цитировать
+1 #9 Иван 21.04.2017 08:46
Каким образом завершать работу с выводом в конце общих результатов: Отправлено хх Получено ххх Потери 5%
Цитировать
0 #8 ирина 03.04.2017 15:19
я успокоилась но не поняла че там писать.
учусь пока думать ещё...
:zzz
Цитировать
0 #7 lunatik 07.11.2016 20:25
Цитирую Дмитрий:
Алексей, добрый день!
Есть ли возможность, чтобы при потери пинга выводилась трассировка до этого же ресурса в соседний файл?
Спасибо.

Может и есть, но я не знаю
Цитировать
0 #6 Дмитрий 24.10.2016 16:49
Алексей, добрый день!
Есть ли возможность, чтобы при потери пинга выводилась трассировка до этого же ресурса в соседний файл?
Спасибо.
Цитировать
0 #5 joystick 23.09.2016 22:44
непредвиденное появление: time:~0

В батниках не силен, объясните что тут не правильно Цитата:
"echo. !DATE! - !time:~0^,8! %%j"
Цитировать
0 #4 lunatik 27.07.2016 19:42
Цитирую serj126:
Алексей а подскажи как сделать чтоб время и дата тоже указывалась. заранее спс

Только что увидел Ваш вопрос.

Думаю что просто:

@>>"D:\logfile-192.168.1.32.log" (
for /l %%i in () do @>nul chcp 866& ping -n 1 192.168.1.32| findstr/i "Превышен Заданный"|(
for /f "delims=" %%j in ('more') do @>nul chcp 1251& cmd/v/c "echo. !DATE! - !time:~0^,8! %%j")
)

Вот мой полный скрипт

echo.>>D:\logfile-192.168.1.32.log
echo.>>D:\logfile-192.168.1.32.log

echo ============ %DATE% - %time:~,5% start 192.168.1.32 ============ >>"D:\logfile-192.168.1.32.log"

echo.>>D:\logfile-192.168.1.32.log
echo.>>D:\logfile-192.168.1.32.log

@>>"D:\logfile-192.168.1.32.log" (
for /l %%i in () do @>nul chcp 866& ping -n 1 192.168.1.32| findstr/i "Превышен Заданный"|(
for /f "delims=" %%j in ('more') do @>nul chcp 1251& cmd/v/c "echo. !DATE! - !time:~0^,8! %%j")
)

echo.>>D:\logfile-192.168.1.32.log
echo.>>D:\logfile-192.168.1.32.log
Цитировать
0 #3 serj126 12.07.2016 07:23
Алексей а подскажи как сделать чтоб время и дата тоже указывалась. заранее спс
Цитировать
+1 #2 Алексей 03.12.2015 18:38
Я уже не помню как проверял, но вроде

если использовать одинарную стрелочку " > ", logfile.log будет перезаписываться, если двойную " >> " - дописываться.
Цитировать
0 #1 Александр 03.12.2015 09:27
Как сделать чтобы в файл информация по пингам дописывалась а не затиралась новой, при остановке и запуске bat?
Спасибо.
Цитировать

Добавить комментарий


Защитный код
Обновить