Показать полную графическую версию : [решено] Создание архивов и отправка почтой
sharovyy
05-12-2013, 11:26
Здравствуйте!
Помогите написать батник для добавление файлов из папки в архивы не более 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
а вот с отправкой застрял. »
Поищите по разделу примеры использования «blat.exe».
sharovyy
06-12-2013, 01:34
Если так (код ниже), то как указать чтобы все файлы из папки добавлялись в новое письмо?
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
Всё, сделал.
Теперь задача удалить файлы из первой и архивы из второй папок...
И... получилось!
sharovyy
06-12-2013, 06:18
А можно как-то сделать чтобы при нажатии правой кнопки мыши на файле и выборе пункта Отправить -> Адресат этот файл если он более 5mb бился на архивы и открывались несколько готовых к отправке писем с вложенными частями?
при нажатии правой кнопки мыши на файле и выборе пункта Отправить -> »
Только не адресат, а создать .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.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.