![]() |
Архивация профиля Thunderbird программой 7-zip 4.65
Здравствуйте! Помогите решить следующую проблему с помощью AUTOIT3: Необходимо производить ежедневную архивацию профиля почтовой программы Thunderbird с помощью архиватора 7-zip 4.65, то есть ежедневно через планировщик задач запускается скрипт (сейчас пока запускаю bat-файл) который закрывает работающую программу Thunderbird, создает папку в которую будет производиться архивация и архивирует профиль. Архивов получается 7 - для каждого дня недели свой, архивы еженедельно обновляются ( прилагаю пример файла )
@Echo Off SetLocal EnableExtensions Taskkill /F /IM Thunderbird.exe md "E:\backupMail" @echo off Cls :: format: dd.mm.yyyy :: кодировка кирилица DOS (866) set /a y=%date:~6,4%&set /a m=1%date:~3,2%-100&set /a d=1%date:~0,2%-100 set /a i=(%y%-1901)*365 + (%y%-1901)/4 + %d% + (!(%y% %% 4))*(!((%m%-3)^&16)) set /a i=(%i%+(%m%-1)*30+2*(!((%m%-7)^&16))-1+((65611044^>^>(2*%m%))^&3))%%7+1 for /f "tokens=%i% delims=/" %%a in (' echo/Понедельник/Вторник/Среда/Четверг/Пятница/Суббота/Воскресенье') do set "w=%%a" for /f "tokens=%m% delims=/" %%a in (' ECHO/Января/Февраля/Марта/Апреля/Мая/Июня/Июля/Августа/Сентября/Октября/Ноября/Декабря/') do set "mmm=%%a" set path1="E:\backupMail" set path2="%computername%_%username%_%i%" if exist "E:\backupMail\%path2%.7z" del "E:\backupMail\%path2%.7z" if exist "E:\backupMail\%path2%.log" del "E:\backupMail\%path2%.log" cd "%systemdrive%\Program Files\7-Zip\" 7z a -t7z "E:\backupMail\%path2%.7z" "%systemdrive%\Documents and Settings\%username%\Application Data\Thunderbird\*" echo Прошла архивация профиля почтовой программы ThunderBird пользователя %username% на компьютере %computername%* %w% %d% %mmm% %y% в %time% >> E:\backupMail\%path2%.log Однако бат-файл легко поддается модификации, поэтому хочу создать скрипт и создать *.exe файл скрипта ( для защиты от изменений). Может у кого-нибудь уже есть какие-то наработки в этом направлении. Помогите, пожалуйста. P.S.: часть скрипта задающая номер архива была заимствована с форума. Сейчас уже правда сказать точно с какого не могу. Хочу только сказать автору ОГРОМНОЕ спасибо. |
Bat To Exe Converter поможет! сайт http://www.f2ko.de/English/b2e/index.php
|
Да, замечательная программа "Bat To Exe Converter". Некоторое время я её и использовал пока антивирус не стал обнаруживать в скомпилированном файле трояна (возможно конечно это ложное срабатывание), поэтому и обратил внимание на программу AutoIT.
Пытаюсь всё-таки переделать скрипт, но не получается пока удаление старого файла (пока не нашел как это решить). Не подставляются переменные и не удаляется архив недельной давности. ;~ Удаляем прошлый архив недельной давности If exist "E:\backupMail\@ComputerName_@UserName_@WDAY.7z" Then FileDelete("E:\backupMail\@ComputerName_@UserName_@WDAY.7z") Загвозка в том, что не знаю как ввести эти переменные в название файла, т.е. чтобы файл имел примерно следующий вид %computername%_%username%_<номер дня недели>. Набросал примерный набросок: КОД: ; Создаем папку для хранения архивов DirCreate("E:\backupMail") ; Закрываем работающую программу ThunderBird ProcessClose("thunderbird.exe") ;~ Расположение консольной программы архиватора 7-zip: $7zip="c:\Program Files\7-Zip\7z.exe" ;~ Удаляем прошлый архив недельной давности If exist "E:\backupMail\@ComputerName_@UserName_@WDAY.7z" Then FileDelete("E:\backupMail\@ComputerName_@UserName_@WDAY.7z") ;~ Имя создаваемого архива: $ArchiveName=' "E:\backupMail\@ComputerName_@UserName_@WDAY.7z"' ;~ Указываем расположежние профиля почтовой программы ThunderBird: $addFiles=' "c:\Documents and Settings\sab\Application Data\Thunderbird\"' ;~ Задаём параметры архивации: $param=' a' & $ArchiveName & $addFiles Run ($7zip & $param,"",1) |
Незнаю особо невникал но вроде вот так получается ....исходя из твоего примера
Код:
$Pach_7Z = "E:\backupMail\" & @ComputerName & "_" & @UserName & "_" & @WDAY & ".7z" |
Спасибо FlatX007 за помощь. Название файла только почему-то не срабатывает. В названии не получаются значения переменных ( что-то типа МойКомпьютер_администратор_1.7z).
|
Что-то типа.. это воодушевляющий ответ ... а точное название никак ?
Что бы не путаться после возврата в переменную каких либо даных нужно прописать вот так Код:
$Pach_7Z = "E:\backupMail\" & @ComputerName & "_" & @UserName & "_" & @WDAY & ".7z" |
Да, в форму выводится как и нужно. Как это сделать в названии файла? Пробовал разные варианты - пока не получается. Как-то надо это перенаправить из формы?
|
Вот так ток WinRarом сделал .... всё остальное в присоединённом файле
Код:
#include <Process.au3> |
FlatX007 огромнейшее Вам спасибо. Решение очень интересное. Попробовал Ваш скрипт - файл создается отлично, только в папке
@AppDataDir & "\Thunderbird\" упаковывается *.ini файл, а хотелось чтобы упаковывались в архив всё что находится в папке @AppDataDir & "\Thunderbird и файлы и папки ( там находится сам профиль программы со множеством вложенных папок). Вижу что выставлено расширение *.* для архива, то есть должно упаковывать файлы и папки. Думаю как настроить архивацию, чтобы захватить и папки. |
Да вот так просто же ;) у меня сработало ...
Код:
#include <Process.au3> |
Вложений: 1
FlatX007 приношу свои извинения скрипт работает ОТЛИЧНО. Очевидно проблема в конфигурации моего компьютера (система с двумя ОС ) - рабочая система установлена на диске D, на рабочей машине все работает нормально! Огромнейшее Вам спасибо за скрипт. Переделал Ваш скрипт под архиватор 7-zip. Архиватор бесплатный возможно кому-нибудь еще пригодиться.
Еще раз спасибо FlatX007 за помощь. Тему можно закрывать - задача решена полностью. |
Время: 12:27. |
Время: 12:27.
© OSzone.net 2001-