Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
propass
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 1
#1

Выборка файлов по расширению, упаковка, отправка адресатам, ведение лога, резервное копирование - CMD/BAT

11.12.2012, 15:02. Просмотров 1372. Ответов 1
Метки нет (Все метки)

Всем привет
Сделал следующий батник
Он ищет в папке файлы aaa0000bbb*.CNG, архивирует их в aaa0000bbb*.zip, отправляет адресату, ведёт лог, ну и бэкап на всякий случай

Bash
1
2
3
4
5
6
7
8
9
10
11
12
SET From=aaa@mail.ru
::SET To=xxx@mail.ru
SET Subj=CSMAIL
SET Body=Packet
SET Smtp_serv=mail.nic.ru
SET User=aaa@mail.ru
SET Pass=aaamailru
 
::адресат bbb 
for /R e:\mail\packet %%i in (aaa0000bbb*.CNG) do e:\mail\7za.exe a -tzip %%~ni.zip %%i & e:\mail\sendemail.exe -f %From% -t [email]bbb@mail.ru[/email] -u %Subj% -m %Body% -s %Smtp_serv% -xu %User% -xp %Pass% -a %%~ni.zip -l log.txt -v & move /Y e:\mail\packet\%%~ni.cng e:\mail\packet_send & echo %date% %time% Отправил в bbb >>e:\mail\log_out.txt
::адресат ccc
for /R e:\mail\packet %%i in (aaa0000ccc*.CNG) do e:\mail\7za.exe a -tzip %%~ni.zip %%i& e:\mail\sendemail.exe -f %From% -t [email]ccc@mail.ru[/email] -u %Subj% -m %Body% -s %Smtp_serv% -xu %User% -xp %Pass% -a %%~ni.zip -l log.txt -v & move /Y e:\mail\packet\%%~ni.cng e:\mail\packet_send & echo %date% %time% Отправил в ccc >>e:\mail\log_out.txt
***************************
Все нормально, он работает. Вопрос в следующем : Адресатов таких как bbb, ccc порядка 40-50 штук
Соответственно батник получается на 2 - 3 листа А4.
Как его сократить и есть ли смысл ? У меня возникла проблема сопоставления имени файла – e-mail адресу клиента т.е. как задать имя переменной «::SET To» для каждого файла.
Добавлять выражение типа
Bash
1
IF exist aaa0000bbb*.cng SET To=bbb@mail.ru  ….GOTO
?
.......
Спрашиваю исключительно из интереса, так как полез в cmd, стало интересно...
Подскажите какой не сложный язык программирования для таких задач можно пробовать осваивать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2012, 15:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Выборка файлов по расширению, упаковка, отправка адресатам, ведение лога, резервное копирование (CMD/BAT):

Резервное копирование файлов и папок
В общем есть папка допустим "С:\sara" размер ее 300 и билие гиг. Что нужно : ...

Резервное копирование файлов программы ИнфоБухгалтер
Здравствуйте, уважаемые форумчане! Вступление: Около месяца назад...

Резервное копирование с исключением файлов с определёнными расширениями
Добрый день! Подскажите как реализовать резервное копирование с применением...

Резервное копирование файлов с определенными расширениями из разных каталогов
Резервное копирование файлов с определенными расширениями из разных каталогов с...

Резервное копирование с последующей архивацией файлов заданного расширения
Создать bat,который выполняет резервное копирование с последующей архивацией...

Резервное копирование файлов с определенными расширениями из разных каталогов
резервное копирования файлов с определенными расширениями из разных каталогов с...

1
Dragokas
Эксперт WindowsАвтор FAQ
16927 / 7012 / 851
Регистрация: 25.12.2011
Сообщений: 10,808
Записей в блоге: 16
22.12.2012, 19:37 #2
Да много чего можно делать.
Можно, например, хранить в отдельном файле списочек Email-адресов и файлов в каждой строке с каким-нибуть разделителем, например =
Код
bbb@mail.ru=0000bbb*.CNG
ccc@mail.ru=0000ccc*.CNG
Затем считывать и подставлять в Ваш цикл:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SET From=aaa@mail.ru
SET Subj=CSMAIL
SET Body=Packet
SET Smtp_serv=mail.nic.ru
SET User=aaa@mail.ru
SET Pass=aaamailru
 
for /F "tokens=1,2 delims==" %%A in (spisok.txt) do (
  for /R e:\mail\packet %%i in (%%B) do (
    e:\mail\7za.exe a -tzip %%~ni.zip %%i
    e:\mail\sendemail.exe -f %From% -t [email]%%A[/email] -u %Subj% -m %Body% -s %Smtp_serv% -xu %User% -xp %Pass% -a %%~ni.zip -l log.txt -v
    move /Y e:\mail\packet\%%~ni.cng e:\mail\packet_send
    echo %date% %time% Отправил в bbb >>e:\mail\log_out.txt
  )
)
где под %%A %%B - части, которые мы получили, прочитав файл spisok.txt построчно по разделителю =
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2012, 19:37
Привет! Вот еще темы с решениями:

Ведение лога bat
Вообщем существует огромное количество директорий с разными структурированными...

Резервное копирование файлов заданного расширения из указанной папки (с вложенными) в указанное место
Задание. Выполнить резервное копирование файлов заданного расширения из ...

Резервное копирование файлов с определенными расширениями из разных каталогов с возможностью создания резервно
Резервное копирование файлов с определенными расширениями из разных каталогов с...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru