просканировать несколько строк и отправить
Добрый день. Имеется скрипт
PHP код:
@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq tokens=3-5" %%i in (
`route.exe print ^| find.exe " 0.0.0.0"`
) do (
blat.exe - -to "e.***@***.by" -server 192.168.33.200 -f ****@***.by -u ****@***.by -pw passw -subject "33.1 routes %%i - %%k" -body "%%i - %%k"
goto :Out
)
:Out
endlocal
exit /b 0
Ищет маршруты со значением 0.0.0.0 и отправляет на почту первый найденный. Задача, сделать так, что бы отправлял все найденные маршруты, а лучше указанное количество.
Вот не знаю, как заставить скрипт обрабатывать не только первую строку, а все найденные строки.
Помогите разобраться.
|
убрать строку:
вместе с ненужной уже меткой
|
Спасибо. Убрал.
PHP код:
@echo off setlocal enableextensions enabledelayedexpansion
for /f "usebackq tokens=3-5" %%i in ( `route.exe print ^| find.exe " 0.0.0.0"` ) do ( blat.exe - -to "e.sipovich@ansa-soft.by" -server 192.168.33.200 -f e.sipovich@ansa-soft.by -u e.sipovich@ansa-soft.by -pw **** -subject "33.1 routes %%i - %%k" -body "%%i - %%k" )
endlocal exit /b 0
Теперь обрабатывает все строки, но присылает по одному письму на каждую строку, а хотелось, что бы присылал одно письмо со всеми маршрутами.
|
Цитата:
Цитата s.i.p.a
хотелось, что бы присылал одно письмо со всеми маршрутами »
|
если письмо читают люди, а не роботы, то доcтаточно
Код:
route print -4 0.0.0.0 | blat.exe - -to "e.sipovich@ansa-soft.by" -server 192.168.33.200 -f e.sipovich@ansa-soft.by -u e.sipovich@ansa-soft.by -pw es2016 -subject "33.1 routes"
|
Цитата:
Цитата Busla
если письмо читают люди, а не роботы, то доcтаточно »
|
да подобное уже реализованно
PHP код:
rem *** Sozdanie otcheta *** route print | find " 0.0.0.0"> C:marshruti.txt rem *** otpravka pisma*** blat c:marshruti.txt -to ****@*****.by -server 192.168.33.200 -f *******@*****.by -u ****@**** -pw 1111 -subject "33.1 routes"
Этот скрипт был заброшен в пользу первого, потому что не загонял в тему письма первый маршрут. Письма приходят раз в час и открывать каждое письмо не очень удобно. по этому нужно, что бы в теме писался первый (или первые два маршрута) а в теле уже все найденные маршруты.
|
Цитата:
Цитата s.i.p.a
что бы присылал одно письмо »
|
Код:
@echo off
set "s="
for /f "tokens=3-5" %%i in ('route.exe print^|find.exe " 0.0.0.0"') do if not defined s set "s=%%i - %%k"& >>"file.log" (echo %%i - %%k)
blat.exe - -to "e.sipovich@ansa-soft.by" -server 192.168.33.200 -f e.sipovich@ansa-soft.by -u e.sipovich@ansa-soft.by -pw es2016 -subject "33.1 routes %s%" -attach "file.log"
exit /b
не знаю как правильно приаттачивать в blat файлы (синтаксис), не пользуюсь им, поэтому посмотрите в мануалах правильно ли как я написал:
... -attach "file.log"
исправьте, если не так.
P.S.
Переделал под [что бы в теме писался первый]
|
Цитата:
Цитата alpap
не знаю как правильно приаттачивать в blat файлы (синтаксис), не пользуюсь им, поэтому посмотрите в мануалах правильно ли как я написал: »
|
Код:
@echo off
set "s="
for /f "tokens=3-5" %%i in ('route.exe print^|find.exe " 0.0.0.0"') do if not defined s set "s=%%i - %%k"& >>"file.log" (echo %%i - %%k)
blat.exe c:\\distr\file.log -to "e.sipovich@ansa-soft.by" -server 192.168.33.200 -f e.sipovich@ansa-soft.by -u e.sipovich@ansa-soft.by -pw es2016 -subject "33.1 routes %s%"
exit /b
вот так правильно, но в лог записывается только первый маршрут и дописывается после каждого выполнения он же. В общем, мне приходит письмо с нужной темой, но лог файл содержит :
192.168.190.1 - 12
192.168.190.1 - 12
192.168.190.1 - 12
количество строк = сколько раз запустил батник.
лог файл не полный и не очищается после запуска.
|
p.s.
Код:
@echo off
set "s="
for /f "tokens=3-5" %%i in ('route.exe print^|find.exe " 0.0.0.0"') do if not defined s set "s=%%i - %%k"
route print | find " 0.0.0.0"> C:\marshruti.txt
blat.exe C:\marshruti.txt -to "e.sipovich@ansa-soft.by" -server 192.168.33.200 -f e.sipovich@ansa-soft.by -u e.sipovich@ansa-soft.by -pw es2016 -subject "33.1 routes %s%"
exit /b
от такие кастыли, получились. Тема письма нужная, содержание почти то, что нужно.
0.0.0.0 0.0.0.0 192.168.190.1 192.168.190.250 12
0.0.0.0 0.0.0.0 213.184.244.236 213.184.244.236 2
Отсечь нули, и можно пользоваться.
|
s.i.p.a,
надо было 3ю строку так изменить:
Код:
...do >>"file.log" (echo %%i - %%k)& if not defined s set "s=%%i - %%k"
нули из-за вывода find, его надо занулить так: ...| >nul find " 0.0.0.0", но это уже не нужно, если сделаете указанные изменения, (пока менял код ошибся слегка).
|
Спасибо. Исправил и всё заработало.
Итоговый вариант
Код:
@echo off
set "s="
for /f "tokens=3-5" %%i in ('route.exe print^|find.exe " 0.0.0.0"') do >>"file.log" (echo %%i - %%k)& if not defined s set "s=%%i - %%k"
blat.exe C:\distr\file.log -to " e.sipovich@ansa-soft.by" -server 192.168.33.200 -f e.sipovich@ansa-soft.by -u e.sipovich@ansa-soft.by -pw ***** -subject "33.1 routes %s%"
Del "C:\distr\file.log"
exit /b
|
Время: 13:02.
© OSzone.net 2001-