Войти

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


s.i.p.a
10-04-2018, 21:49
Всем привет. столкнулся с проблемой. Помогите, если можете.

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

for /f "tokens=3-4" %%a in ('route print ^| find " 0.0.0.0"') do blat - -to user1@tut.by -server 192.168.33.200 -f user2@tut.by -u user2@tut.by -pw user2 -subject "%%a - %%b" -body "%%a - %%b"


Проблема в том, что данный скрипт отправляет несколько писем, если находит больше одного маршрута с " 0.0.0.0". А нужно, что бы присылалось только одно письмо со всеми маршрутами в теле и первым маршрутом в теме письма. Либо вообще цикл заканчивался после первого найденного маршрута и отправлял письмо с первым найденным маршрутом.

Буду благодарен за ваши советы и помощь.

Iska
10-04-2018, 22:55
нужно, что бы присылалось только одно письмо со всеми маршрутами в теле и первым маршрутом в теме письма. »
@echo off
setlocal enableextensions enabledelayedexpansion

(
for /f "usebackq tokens=3-4" %%i in (
`route.exe print ^| find.exe " 0.0.0.0"`
) do (
if not defined sSubject set sSubject=%%i - %%j
echo %%i - %%j
)
) | blat.exe - -to user1@tut.by -server 192.168.33.200 -f user2@tut.by -u user2@tut.by -pw user2 -subject "%sSubject%"

endlocal
exit /b 0


Либо вообще цикл заканчивался после первого найденного маршрута и отправлял письмо с первым найденным маршрутом. »
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq tokens=3-4" %%i in (
`route.exe print ^| find.exe " 0.0.0.0"`
) do (
blat.exe - -to user1@tut.by -server 192.168.33.200 -f user2@tut.by -u user2@tut.by -pw user2 -subject "%%i - %%j" -body "%%i - %%j"
goto :Out
)

:Out

endlocal
exit /b 0

Не проверялось.

В первом коде вывод от разбора фильтрации группируется и передаётся по конвейеру на stdin blat.exe (посему параметр -body не используется), тема письма формируется из первой отфильтрованной строки разбора.

Во втором коде тупо происходит выход за пределы цикла разбора после первого прохода.

s.i.p.a
11-04-2018, 20:13
Iska, второй скрипт вроде рабочий. Первый, к сожалению, вообще не запускается. Батник сразу закрывается. Завтра проверю, когда будет доступ к серверу почты. ПОка огромное спасибо и на этом.

Iska
12-04-2018, 01:31
Первый, к сожалению, вообще не запускается. Батник сразу закрывается. »
Запускается. Но отрабатывает ошибку. Посмотрю, подумаю, вспомню, что можно попытаться сделать. В крайнем случае можно будет тупо использовать временный файл.




© OSzone.net 2001-2012