Как создать и отправить архивы по почте из bat файла

Автор Itworkroom

Как создать и отправить архивы по почте из bat файла

Много воды утекло с тех пор как, я написал небольшой батник и поместил его исполнение в виндовый планировщик. С тех пор это самая стабильная вещь, которая работает без вмешательства админа. У меня ушло немало времени прежде чем я собрал из обрывков команд нужный мне алгоритм. Вкратце: с сервера приложений выгружается 2 файла, необходимо их запаковать и отправить по почте.

Итак имеем 2 tab файла: Summa_*.tab, Reg_*tab

* — это текущая дата, т.к. приложение в конец имени файла дописывало текущую дату.

Для начала сжимаем файлы, но т.к. корпоративный почтовый сервер за раз не пропускал больше 3 Мб, было решено делать архивы по 2500 КБ. Для этого используем следующую конструкцию:

«C:\Program Files (x86)\WinRar\rar» a -agYYYY-MM-DD-HHMMSS -v2500 C:\Temp\archive_.rar m[f] C:\Temp\Summa_*.tab C:\Temp\Reg_*tab

В итоге на выходе имеем архив с именем archive_agYYYY-MM-DD-HHMMSS.rar, как вы наверное уже поняли, за формирование даты отвечает ключ agYYYY-MM-DD-HHMMSS, а за обрезание архива ключ v2500. Если в сжатом виде, размер превысит 2500 КБ, то будет создано 2 файла с именами:

archive_ YYYY-MM-DD-HHMMSS.part01.rar

archive _ YYYY-MM-DD-HHMMSS.part02.rar

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

FOR %%i IN («C:\Temp\archive_2014*») DO Set FileName=%%i

Set NName=%FileName:~8,23%

— Переносим файлы, которые мы сжали в папку:

move C:\temp\Summa_*.tab C:\temp\back

move C:\temp\Reg_*.tab C:\temp\back

—Для отправки почты я использовал утилиту sendemail

sendemail -f youraddress@mail.ru -t bazar@mail.ru -u archive_%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2% -m «archive_%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%» -s IP -a «C:\temp\%NName%.rar» -cc tome@mail.ru -xu tlegen -xp 123456

На самом деле, у меня в батнике данные строки прописаны несколько раз, т.к. бывают случаи когда архивов создается 2,3 или даже 4, вы тоже можете поместить нижеприведенный код:

sendemail -f youraddress@mail.ru -t bazar@mail.ru -u archive_%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2% -m «archive_%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%» -s IP -a «C:\temp\%NName%.part01.rar» -cc tome@mail.ru -xu tlegen -xp 123456

ping server –n 10

sendemail -f youraddress@mail.ru -t bazar@mail.ru -u archive_%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2% -m «archive_%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%» -s IP -a «C:\temp\%NName%.part02.rar» -cc tome@mail.ru -xu tlegen -xp 123456

Если вы заметили, 2 команды я разделил командой ping server –n 10, это делается для того, чтобы создать  интервал между командами. Пинговать можно компьютер с которого производится отправление файлов.

вкратце поясню значение  ключей, которые я использовал:

-f youraddress@mail.ru – в поле От кого будет записан этот адрес

-t bazar@mail.ru – это поле Кому отправить письмо

-u Тема сообщения

-m Тело сообщения

-s SMTP сервер

-a Вложение

-cc Скрытая копия

-xu Имя пользователя для авторизации на сервере

-xp Пароль

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

move c:\temp\archive_*.rar c:\temp\back

One comment on “Как создать и отправить архивы по почте из bat файла

  1. Здравствуйте! попытался ваш код адаптировать под свои нужды не получается помогите , что не так?

    FOR %%i IN («D:\Мои документы\Desktop\Рабочие файлы\мини.xlsx») DO Set FileName=%%i
    ‘Set NName=%FileName:~8,23%
    sendemail -f assei@mail.ru ‘//-f в поле От кого будет записан этот адрес
    -t 89158838811ddp@mail.ru ‘//-t это поле Кому отправить письмо
    -u письмо ‘//-u Тема сообщения
    -m «мини» ‘// -m Тело сообщения
    -s smpt.mail.ru ‘// -s SMTP сервер
    -a «D:\Мои документы\Desktop\Рабочие файлы\мини.xlsx» ‘//-a Вложение
    -cc 89158838811ddp@mail.ru ‘//-cc Скрытая копия
    -xu assei ‘//-xu Имя пользователя для авторизации на сервере
    -xp здесь пароль от почты assei@mail.ru ‘//-xp Пароль

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *