Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Создание архивов и отправка почтой (http://forum.oszone.net/showthread.php?t=273450)

sharovyy 05-12-2013 11:26 2267326

Создание архивов и отправка почтой
 
Здравствуйте!

Помогите написать батник для добавление файлов из папки в архивы не более 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 05-12-2013 16:49 2267503

Цитата:

Цитата sharovyy
а вот с отправкой застрял. »

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

sharovyy 06-12-2013 01:34 2267788

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

Код:

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 06-12-2013 02:01 2267796

Всё, сделал.

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

И... получилось!

sharovyy 06-12-2013 06:18 2267840

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

Oceanel 14-05-2014 16:18 2351350

Вложений: 1
Цитата:

Цитата sharovyy
при нажатии правой кнопки мыши на файле и выборе пункта Отправить -> »

Только не адресат, а создать .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.


Время: 20:23.

Время: 20:23.
© OSzone.net 2001-