@Illium

Почему findstr в батнике ведёт себя неадекватно?

Друзья, доброго времени суток!

Имеем батник
@set iptoping=127.0.0.1
@set pdir=C:\pinglog
@echo Пингуем %iptoping% пакетами по 5000 байт с выводом в %pdir%\ping_%iptoping%.log. Для завершения закройте окно.
@MD %pdir%
@>"%pdir%\ping_%iptoping%.log" (
 for /l %%i in () do @>nul chcp 866& ping -l 5000 -n 1 %iptoping%| findstr /i "Превышен Заданный"|(
 for /f "delims=" %%j in ('more') do @>nul chcp 866& cmd/v/c "echo.!date! !time:~0^,8! %%j")
)

В таком виде findstr ищет в выводе команды ping строки, содержащие в себе "Превышен" или "Заданный", записывает строку в переменную, а после с датой и временем выводит в файл.
Однако стоит добавить (или заменить) "Ответ", чтобы команда приняла следующий вид
findstr /i "Превышен Заданный Ответ"
и в случае доступности адреса (получения ответа) в окно командной строки начинает сыпаться вывод
Не удаётся найти указанный файл
Лог при этом записывается адекватно на первый взгляд (т.е. "date time Ответ от ...", только вот строк в нём гораздо меньше, чем строк спама в командной строке.

Господа, вопрос один - какой файл он ищет и почему не может его найти? Вопрос два - как запретить ему (или скрыть сообщения) спамить в окно командной строки? Вопрос три - можно ли моей ленивой жопе показать пример того же для PowerShell?
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
Немного переделал, как мне представлялось правильным - должен выводить в лог дату/время когда узел недоступен.
@echo off
set "iptoping=127.0.0.1"
set "pdir=C:\pinglog"
echo Пингуем %iptoping% пакетами по 5000 байт с выводом в %pdir%\ping_%iptoping%.log. Для завершения закройте окно.
1>nul 2>&1 md %pdir%
>"%pdir%\ping_%iptoping%.log" (
for /l %%i in () do (
   for /f "delims=" %%a in ('ping -l 5000 -n 1 %iptoping% ^| findstr "Превышен Заданный Ответ" ') do echo.%date% %time:~0,8% %%a
  )
)

Не могу понять нафига в пинге параметр -l?
И все таки нужно воткнуть паузу, а то получается какая-то DoS атака.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы