CMD/BAT - [решено] Создание архивов и отправка почтой

Ответить
Аватара пользователя
sharovyy

CMD/BAT - [решено] Создание архивов и отправка почтой

Сообщение sharovyy »

Здравствуйте!



Помогите написать батник для добавление файлов из папки в архивы не более 5mb и отправки почтой каждой части архива в отдельном письме. Желательно через Outlook. Если такое возможно!



С архивированием файлов и разбиением на части вроде справился (код ниже), а вот с отправкой застрял.





Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
:: Каталог, в котором лежат файлы для архивирования
set fPath=C:\111
:: Путь к каталогу куда будут попадать архивы
set toPath=c:\222\
:: Путь к архиватору
set rar="C:\000\rar.exe"
set ArhName=Arhiv 
:: Архивирование
  %rar% a -ep1 -v5m -agYYYYMMDD "%toPath%\%ArhName%.rar" "%fPath%\*.*"
goto exit
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Создание архивов и отправка почтой

Сообщение Iska »

Цитата sharovyy:



а вот с отправкой застрял.
CMD/BAT - [решено] Создание архивов и отправка почтой




Поищите по разделу примеры использования «blat.exe».
Аватара пользователя
sharovyy

Re: CMD/BAT - [решено] Создание архивов и отправка почтой

Сообщение sharovyy »

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





Код:

Код: Выделить всё

for /f "delims=" %%i in ('dir /b /a-d %toPath%') do (
"C:\Program Files\Microsoft Office\Office12\Outlook.exe" /a "c:\222\XXX"
)

Т.е. что написать вместо XXX? Если указать конкретное имя файла, то письма создаются с первым файлом и папки.

И создается их столько штук, на сколько разбился архив. Т.е. почти как нужно мне, только нужно как-то указать на все файлы в папке, а не конкретный.
Аватара пользователя
sharovyy

Re: CMD/BAT - [решено] Создание архивов и отправка почтой

Сообщение sharovyy »

Всё, сделал.



Теперь задача удалить файлы из первой и архивы из второй папок...



И... получилось!
Аватара пользователя
sharovyy

Re: CMD/BAT - [решено] Создание архивов и отправка почтой

Сообщение sharovyy »

А можно как-то сделать чтобы при нажатии правой кнопки мыши на файле и выборе пункта Отправить -> Адресат этот файл если он более 5mb бился на архивы и открывались несколько готовых к отправке писем с вложенными частями?
Аватара пользователя
Oceanel

Re: CMD/BAT - [решено] Создание архивов и отправка почтой

Сообщение Oceanel »

Цитата sharovyy:



при нажатии правой кнопки мыши на файле и выборе пункта Отправить ->
CMD/BAT - [решено] Создание архивов и отправка почтой




Только не адресат, а создать .bat и на него ярлык в "%AppData%\Microsoft\Windows\SendTo\", код этого батника:


читать дальше »






Код:

Код: Выделить всё

@echo off
title Отправить с помощью Outlook по 5 Мб
setlocal enabledelayedexpansion
set topath=%~f1 [отправка через Outlook]
set topathfile=%~f1 [отправка через Outlook]\%~nx1
set $date=%date:~6,4%-%date:~3,2%-%date:~0,2%
set allselefiles=%*
rem ----------- Проверки --------------
rem есть ли WinRar, то упаковывать с помощью его
if exist "c:\Program Files\WinRAR\rar.exe" (set arxiverpath=c:\Program Files\WinRAR\rar.exe& set switch=rar& goto :check2)
if exist "c:\Program Files (x86)\Total Commander\Plugins\arc\Rar.exe" (set arxiverpath=c:\Program Files ^(x86^)\Total Commander\Plugins\arc\Rar.exe& set switch=rar& goto :check2)
rem есть ли 7z, то упаковывать с помощью его
if exist "c:\Program Files\7-Zip\7z.exe" (set arxiverpath=c:\Program Files\7-Zip\7z.exe& set switch=7z& goto :check2)
if exist "\\server\утилиты\7z\7za.exe" (set arxiverpath=\\server\утилиты\7z\7za.exe& set switch=7z& goto :check2)
color 0C& echo.& echo   Не найден архиватор!& pause>nul& exit
:check2
rem есть ли Outlook 14 или Outlook 15
if exist "C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE" (set outlookpath=C:\Program Files ^(x86^)\Microsoft Office\Office14\OUTLOOK.EXE& goto :check3)
if exist "C:\Program Files (x86)\Microsoft Office 15\root\office15\outlook.exe" (set outlookpath=C:\Program Files ^(x86^)\Microsoft Office 15\root\office15\outlook.exe& goto :check3)
color 0C& echo.& echo   Не найден Outlook!& pause>nul& exit
:check3
rem есть ли есть ли временная папка
if exist "%~nx1 [отправка через Outlook]" (
    echo.
    color 0C
    echo   Существует временная папка с архивами:
    echo "%topath%"
    echo.
    echo При необходимости удалите папку вручную и повторите...
    pause>nul
    exit
  )
rem ----------------------------------
rem ---- Алгоритм для упаковки выбранных файлов/папок и отправки через Outlook по 5 Мб, сокращенный ----
echo ------------- Начало ---------------
echo   1/5 Создаем временную папку
rem for /f "delims=" %%i in (%1) do echo %%~dpi
rem echo %cd%
md "%~nx1 [отправка через Outlook]"
if %errorlevel% GTR 0 (color 0C& echo.& echo   Ошибка создания временной папки.& pause>nul& exit)
echo ..создана
echo.
echo   2/5 Выбранные файлы упаковываем по 5мб в нее
echo начало упаковки %switch%..
if /I "%switch%"=="rar" ("%arxiverpath%" a -m5  -rr3p -dh -ri10:0 -idq -v5000000b -ilog"%~nx1_%$date%_%switch%.log" "%topathfile%.rar" %allselefiles%)
if /I "%switch%"=="7z" ("%arxiverpath%" a "%topathfile%.7z" %allselefiles% -v4000000b -v5000000b > "%~nx1_%$date%_%switch%.log")
echo ..упаковка завершена
echo.
echo   3/5 Подсчет частей архива упакованных файлов
for /f "delims= " %%i in ('dir /a-d "%topath%"^|find /I "файлов"') do set countfiles=%%i
rem проверка на большое количество частей для отправки
:arxfil0
set SURE=
if not %countfiles% GTR 5 (
    goto :arxfil1
  )
set /p SURE=Получено %countfiles% частей. Продолжить? [y/n]: 
if /I "%SURE%"=="y"   goto :arxfil1
if /I "%SURE%"=="n"   echo.& goto :deldir0
rem set /p SURE= Не правильный ввод, повторите еще раз:
echo Не правильный ввод, нажмите любую клавишу чтобы повторить еще раз...
pause>nul
goto :arxfil0
:arxfil1
echo ..всего частей письма = %countfiles%
echo.
echo   4/5 Создание писем и вложение упакованных файлов
set currfile=0
for /f "delims=" %%i in ('dir /b /a-d "%topath%"') do (
    set /a currfile+=1
    echo Формирование "%%i" ^(часть !currfile! из %countfiles%^), ждите...
    start /WAIT "" "%outlookpath%" /c ipm.note /a "%topath%\%%i"
    ping -n 3 localhost>nul
  )
echo.
:deldir0
echo   5/5 Удаление временной папки
rd /s /q "%~nx1 [отправка через Outlook]"
del /q "%~nx1_%$date%_%switch%.log"
echo ..удалена
echo.
echo.
echo ------------ Завершено -------------
echo.
echo                                    Киев, 2014
ping -n 11 localhost>nul
rem exit







В архиве готовые файлы + скрипт установки и скрины внешнего вида. Работает с несколькими выделенными папками и файлами.

Проверено на Win7x64, WinRAR 4.0, 7z 9.20 и Outlook 2010.
Вложения
через Outlook по 5 Мб.zip
(157.26 КБ) 0 скачиваний
через Outlook по 5 Мб.zip
(157.26 КБ) 0 скачиваний
Ответить

Вернуться в «Скриптовые языки администрирования Windows»