|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Ping со временем и датой |
|
CMD/BAT - [решено] Ping со временем и датой
|
Ветеран Сообщения: 1639 |
Профиль | Отправить PM | Цитировать Друзья, подскажите, пожалуйста, готовый скрипт, который бы выводил результаты пинга с датой и временем?
В инете есть варианты, но что-то на нужное не наткнулся... Спасибо! |
|
Отправлено: 22:03, 20-04-2015 |
Ветеран Сообщения: 1758
|
|
Отправлено: 15:35, 30-11-2015 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать The_Immortal, я бы для начала убрал все перенаправления в файл, открыл консоль, запустил пакетный файл и посмотрел на его вывод.
|
Отправлено: 15:37, 30-11-2015 | #22 |
Ветеран Сообщения: 1758
|
|
Отправлено: 15:48, 30-11-2015 | #23 |
Ветеран Сообщения: 1639
|
Профиль | Отправить PM | Цитировать Господа, я прошу простить меня. В корне диска С лежала скаченная самопальная утилита ping.exe, которая и запускалась при выполнении скрипта... Запускалась она в полном фоне, поэтому я её и не видел
Foreigner, в вышеуказанном скрипте пинг происходит 4 раза (стандартно), после этого результат записывается в файл и скрипт завершается, а нужна бесконечность. Я попробовал так: Но так работать не захотело. |
Отправлено: 16:22, 30-11-2015 | #24 |
Ветеран Сообщения: 1758
|
Цитата The_Immortal:
@echo off setlocal 1>nul chcp 866 :1 1>nul timeout /t 1 for /l %%i in (0,1,9) do ( for /f "tokens=*" %%j in ('"ping -n 1 ya.ru | findstr "TTL=""') do ( if %%i geq 9 goto:1 call:2 %%j )) goto:eof :2 1>nul chcp 1251 1>>1.txt echo %date% %time%: %* 1>nul chcp 866 Выйти из батника Ctrl+C |
|
Последний раз редактировалось Foreigner, 30-11-2015 в 17:14. Отправлено: 17:06, 30-11-2015 | #25 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Всем привет.
Очень помогло данное решение. Но, если пинговать IP-адрес или имя компьютера, то файл не создаётся. Подскажите как решить эту проблему? UPD: оказывается, если пингуемый хост недоступен, то лог не пишется. Как можно доработать код, чтобы в файл писалось, что пинг не прошёл? |
Последний раз редактировалось Duber123, 23-07-2022 в 19:40. Отправлено: 19:30, 23-07-2022 | #26 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 17:55, 24-07-2022 | #27 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Это немного не тот формат вывода, который бы хотелось получить + крякозыбры опять.
Вот, сделал под свои нужды: Но как к этому прикрутить кодировку из примера Foreigner, чтобы в блокноте кириллица отображалась? |
Последний раз редактировалось Duber123, 24-07-2022 в 19:10. Отправлено: 18:56, 24-07-2022 | #28 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать Duber123, Если применить способ Foreigner к Вашему решению, то
@echo off >nul chcp 866 :Begin For /f "tokens=* skip=2" %%a in ('ping lenta.ru -n 1') Do Call :Out "%%date%% %%time:~0,8%% %%a" >nul timeout 3 GoTo :Begin :Out >nul Chcp 1251 >>"Z:\Soft_Out\ping1251.log" Echo %~1 >nul chcp 866 Exit /B @Echo Off cls >nul chcp 866 Set /A TWait=1 Set "Addr=lenta.ru" Set "Log=Z:\Soft_Out\MyPing1251.log" :Begin Set "Str=" FOR /F "usebackq delims=" %%p IN (`ping -n 5 %Addr%`) DO Set "Str=%%p" Call :Out "%Date% %Time% %Addr% %Str%" >nul TimeOut /T %TWait% GoTo :Begin :Out >nul Chcp 1251 >>"%Log%" Echo %~1 >nul chcp 866 Exit /B Цитата Duber123:
Общая проблема: окно CMD будет висеть черным пятном. Можно, конечно, применить VBS, чтобы его скрыть, а можно полностью переделать в VBS Dim Address: Address = "lenta.ru" Dim LogFile: LogFile = "Z:\Soft_Out\PingVbs.log" Dim WaitSek: WaitSek = 60 Dim Msg With CreateObject("Scripting.FileSystemObject").OpenTextFile(LogFile, 8, True) Do With GetObject("winmgmts:").Get("Win32_PingStatus.Address='" + Address + "'") Msg = CStr(Now) + " " + .Address + " " + .ProtocolAddress + " " If IsNull(.ResponseTime) Then Msg = Msg + " ResponseTime= нет ответа" + " " Else Msg = Msg + "ResponseTime=" + CStr(.ResponseTime) + " " Msg = Msg + "TTL= " + CStr(.ResponseTimeToLive) End If End With .WriteLine Msg 'MsgBox Msg WScript.Sleep (WaitSek * 1000) Loop End With |
|
------- Последний раз редактировалось megaloman, 25-07-2022 в 08:29. Отправлено: 08:23, 25-07-2022 | #29 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Цитата:
Изначально же мой файл содержит классический вывод команды Ping + метка времени (открыт с помощью NotePad++): Скрытый текст
25.07.2022 9:43:39 Ответ от 87.250.250.242: число байт=32 время=6мс TTL=248 25.07.2022 9:43:40 Ответ от 87.250.250.242: число байт=32 время=6мс TTL=248 25.07.2022 9:43:41 Ответ от 87.250.250.242: число байт=32 время=6мс TTL=248 25.07.2022 9:43:42 Ответ от 87.250.250.242: число байт=32 время=6мс TTL=248 25.07.2022 9:43:43 Ответ от 87.250.250.242: число байт=32 время=6мс TTL=248 Т.к. нужно решение именно на BAT-файле, возможно привести выводимую информацию именно к такому виду? С окном консоли действительно есть такой эффект, но для меня не критично, т.к. пинговать приходиться редко и только когда нужно выявить время аварийного отключения хоста. Я просто его сворачиваю и таким образом иконка на панели задач служит напоминанием, что процесс запущен. |
|
Последний раз редактировалось Duber123, 25-07-2022 в 10:40. Отправлено: 10:02, 25-07-2022 | #30 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Работа с датой, временем | alexey_vf | Скриптовые языки администрирования Windows | 9 | 05-06-2013 04:52 | |
Службы - что со временем в w-8 | r-studio | Microsoft Windows 8 и 8.1 | 3 | 03-01-2013 03:09 | |
Разное - [решено] Проблема со временем | oblomkrs | Microsoft Windows 7 | 4 | 18-01-2012 14:59 | |
Проблема со временем | PLATON | Непонятные проблемы с Железом | 2 | 20-04-2008 15:35 |
|