Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] просканировать несколько строк и отправить

Ответить
Настройки темы
CMD/BAT - [решено] просканировать несколько строк и отправить

Старожил


Сообщения: 157
Благодарности: 2

Профиль | Отправить PM | Цитировать


Добрый день. Имеется скрипт

PHP код: Выделить весь код

@echo off

setlocal enableextensions enabledelayedexpansion

for /"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 -****@***.by -****@***.by -pw passw -subject "33.1 routes %%i - %%k" -body "%%i - %%k"
        
goto :Out
    
)

:
Out

endlocal
exit /b 0 


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

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

Отправлено: 15:00, 19-02-2019

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


убрать строку:
Код: Выделить весь код
goto :Out
вместе с ненужной уже меткой
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:42, 19-02-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 157
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата alpap:
убрать строку: »
Спасибо. Убрал.

PHP код: Выделить весь код

@echo off
setlocal enableextensions enabledelayedexpansion

for /"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, 20-02-2019 в 14:19.


Отправлено: 12:38, 20-02-2019 | #3


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Цитата 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"
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:50, 20-02-2019 | #4


Старожил


Сообщения: 157
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата 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 -****@**** -pw 1111 -subject "33.1 routes" 

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

Отправлено: 14:19, 20-02-2019 | #5


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


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

Отправлено: 14:30, 20-02-2019 | #6


Старожил


Сообщения: 157
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата 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

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

Отправлено: 15:49, 20-02-2019 | #7


Старожил


Сообщения: 157
Благодарности: 2

Профиль | Отправить PM | Цитировать


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


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

Отправлено: 16:08, 20-02-2019 | #8


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось alpap, 20-02-2019 в 18:29.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:19, 20-02-2019 | #9


Старожил


Сообщения: 157
Благодарности: 2

Профиль | Отправить PM | Цитировать


Спасибо. Исправил и всё заработало.
Итоговый вариант

Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:23, 21-02-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] просканировать несколько строк и отправить

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] замена текста (несколько строк) Alexander_88 Скриптовые языки администрирования Windows 6 19-10-2018 19:16
CMD/BAT - [решено] изменить несколько строк в файле man8531 Скриптовые языки администрирования Windows 29 27-06-2018 06:27
CMD/BAT - Найти текст в файле и вставить над ним несколько строк Sergey.l Скриптовые языки администрирования Windows 7 28-01-2018 23:06
CMD/BAT - Сформировать из 1 файла несколько файлов с разным числом строк nastasa Скриптовые языки администрирования Windows 6 11-05-2017 12:15
CMD/BAT - Удалить несколько строк из файла GhostKU Скриптовые языки администрирования Windows 1 01-09-2011 18:40




 
Переход