Войти

Показать полную графическую версию : [решено] просканировать несколько строк и отправить


s.i.p.a
19-02-2019, 15:00
Добрый день. Имеется скрипт

@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 и отправляет на почту первый найденный. Задача, сделать так, что бы отправлял все найденные маршруты, а лучше указанное количество.

Вот не знаю, как заставить скрипт обрабатывать не только первую строку, а все найденные строки.
Помогите разобраться.

alpap
19-02-2019, 18:42
убрать строку:
goto :Out
вместе с ненужной уже меткой

s.i.p.a
20-02-2019, 12:38
убрать строку: »
Спасибо. Убрал.

@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


Теперь обрабатывает все строки, но присылает по одному письму на каждую строку, а хотелось, что бы присылал одно письмо со всеми маршрутами.

Busla
20-02-2019, 13:50
хотелось, что бы присылал одно письмо со всеми маршрутами »
если письмо читают люди, а не роботы, то до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"

s.i.p.a
20-02-2019, 14:19
если письмо читают люди, а не роботы, то доcтаточно »

да подобное уже реализованно

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"


Этот скрипт был заброшен в пользу первого, потому что не загонял в тему письма первый маршрут. Письма приходят раз в час и открывать каждое письмо не очень удобно. по этому нужно, что бы в теме писался первый (или первые два маршрута) а в теле уже все найденные маршруты.

alpap
20-02-2019, 14:30
что бы присылал одно письмо »

@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.
Переделал под [что бы в теме писался первый]

s.i.p.a
20-02-2019, 15:49
не знаю как правильно приаттачивать в 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

количество строк = сколько раз запустил батник.
лог файл не полный и не очищается после запуска.

s.i.p.a
20-02-2019, 16:08
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

Отсечь нули, и можно пользоваться.

alpap
20-02-2019, 18:19
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", но это уже не нужно, если сделаете указанные изменения, (пока менял код ошибся слегка).

s.i.p.a
21-02-2019, 10:23
Спасибо. Исправил и всё заработало.
Итоговый вариант

@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




© OSzone.net 2001-2012