|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Архивация профиля Thunderbird программой 7-zip 4.65 |
|
|
[решено] Архивация профиля Thunderbird программой 7-zip 4.65
|
Новый участник Сообщения: 6 |
Здравствуйте! Помогите решить следующую проблему с помощью 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.: часть скрипта задающая номер архива была заимствована с форума. Сейчас уже правда сказать точно с какого не могу. Хочу только сказать автору ОГРОМНОЕ спасибо. |
|
Отправлено: 19:48, 12-05-2009 |
Новый участник Сообщения: 48
|
Профиль | Отправить PM | Цитировать Bat To Exe Converter поможет! сайт http://www.f2ko.de/English/b2e/index.php
|
Отправлено: 11:49, 13-05-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Да, замечательная программа "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) |
Отправлено: 21:35, 13-05-2009 | #3 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Незнаю особо невникал но вроде вот так получается ....исходя из твоего примера
$Pach_7Z = "E:\backupMail\" & @ComputerName & "_" & @UserName & "_" & @WDAY & ".7z" ; Создаем папку для хранения архивов DirCreate("E:\backupMail") ; Закрываем работающую программу ThunderBird ProcessClose("thunderbird.exe") ;~ Расположение консольной программы архиватора 7-zip: $7zip = @ProgramFilesDir & "\7-Zip\7z.exe" ;~ Удаляем прошлый архив недельной давности If FileExists($Pach_7Z) Then FileDelete($Pach_7Z) ;~ Имя создаваемого архива: $ArchiveName = $Pach_7Z ;~ Указываем расположежние профиля почтовой программы ThunderBird: $addFiles =@AppDataDir & "\Thunderbird\" ;~ Задаём параметры архивации: $param = ' a' & $ArchiveName & $addFiles Run($7zip & $param,"",1) |
Последний раз редактировалось FlatX007, 14-05-2009 в 09:18. Отправлено: 08:52, 14-05-2009 | #4 |
Новый участник Сообщения: 6
|
Спасибо FlatX007 за помощь. Название файла только почему-то не срабатывает. В названии не получаются значения переменных ( что-то типа МойКомпьютер_администратор_1.7z).
|
|
Отправлено: 20:08, 14-05-2009 | #5 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Что-то типа.. это воодушевляющий ответ ... а точное название никак ?
Что бы не путаться после возврата в переменную каких либо даных нужно прописать вот так Смотриш, что выдало сообщение и сравниваеш с тем что должно быть ... редактируеш |
Отправлено: 23:15, 14-05-2009 | #6 |
Новый участник Сообщения: 6
|
Да, в форму выводится как и нужно. Как это сделать в названии файла? Пробовал разные варианты - пока не получается. Как-то надо это перенаправить из формы?
|
Отправлено: 16:38, 16-05-2009 | #7 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Вот так ток WinRarом сделал .... всё остальное в присоединённом файле
#include <Process.au3> If FileExists(@ScriptDir & "\Rar.exe")Then ProcessClose("thunderbird.exe") If ProcessExists("thunderbird.exe") Then MsgBox(16,"","Программа Thunderbird запущена ... продолжение невозможно !!") Exit EndIf $Param = @ComputerName & "_" & @UserName & "_" & @WDAY $Dir_Backup = "E:\backupMail\" $Rar = @ProgramFilesDir & "\WinRAR\Rar.exe" $Dir_Thunderbird = @AppDataDir & "\Thunderbird\" DirCreate($Dir_Backup) FileCopy($Rar, @ScriptDir & "\Rar.exe") If FileExists($Dir_Backup & $Param & ".rar") Then FileDelete($Dir_Backup & $Param & ".rar") ;~ MsgBox(0,"" ,"Rar a" & " " & '"' & $Dir_Backup & $Param & '"' & " " & '"' & $Dir_Thunderbird & "*.*" & '"') _RunDOS("Rar a" & " " & '"' & $Dir_Backup & $Param & '"' & " " & '"' & $Dir_Thunderbird & "*.*" & '"') If FileExists($Dir_Backup & $Param & ".rar")Then MsgBox(64,"","Архивация профиля закончена") EndIf Exit Else MsgBox(16,"","Ненайден файл Rar.exe ... продолжение невозможно !!") Exit EndIf |
Последний раз редактировалось FlatX007, 27-06-2009 в 23:54. Отправлено: 20:51, 16-05-2009 | #8 |
Новый участник Сообщения: 6
|
FlatX007 огромнейшее Вам спасибо. Решение очень интересное. Попробовал Ваш скрипт - файл создается отлично, только в папке
@AppDataDir & "\Thunderbird\" упаковывается *.ini файл, а хотелось чтобы упаковывались в архив всё что находится в папке @AppDataDir & "\Thunderbird и файлы и папки ( там находится сам профиль программы со множеством вложенных папок). Вижу что выставлено расширение *.* для архива, то есть должно упаковывать файлы и папки. Думаю как настроить архивацию, чтобы захватить и папки. |
Отправлено: 11:10, 17-05-2009 | #9 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Да вот так просто же у меня сработало ...
#include <Process.au3> If FileExists(@ScriptDir & "\Rar.exe")Then ProcessClose("thunderbird.exe") If ProcessExists("thunderbird.exe") Then MsgBox(16,"","Программа Thunderbird запущена ... продолжение невозможно !!") Exit EndIf $Param = @ComputerName & "_" & @UserName & "_" & @WDAY $Dir_Backup = "E:\backupMail\" $Rar = @ProgramFilesDir & "\WinRAR\Rar.exe" $Dir_Thunderbird = @AppDataDir & "\Thunderbird" DirCreate($Dir_Backup) FileCopy($Rar, @ScriptDir & "\Rar.exe") If FileExists($Dir_Backup & $Param & ".rar") Then FileDelete($Dir_Backup & $Param & ".rar") ;~ MsgBox(0,"" ,"Rar a" & " " & '"' & $Dir_Backup & $Param & '"' & " " & '"' & $Dir_Thunderbird & "*.*" & '"') _RunDOS("Rar a" & " " & '"' & $Dir_Backup & $Param & '"' & " " & '"' & $Dir_Thunderbird & "" & '"') If FileExists($Dir_Backup & $Param & ".rar")Then MsgBox(64,"","Архивация профиля закончена") EndIf Exit Else MsgBox(16,"","Ненайден файл Rar.exe ... продолжение невозможно !!") Exit EndIf |
Отправлено: 12:47, 17-05-2009 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Архиваторы - [решено] [addon] 7-Zip 9.20 Final / 9.22 beta / 9.28 alpha | dimadr | Наборы обновлений для Windows XP/2003/Windows 7 | 488 | 13-06-2012 13:33 | |
Ограничения на размер профиля+исключение папок из профиля | Grug | Microsoft Windows NT/2000/2003 | 2 | 04-03-2009 11:09 | |
[решено] Не запускаются Firefox и Thunderbird. | Belansky | Программное обеспечение Linux и FreeBSD | 3 | 28-01-2009 19:40 | |
CMD/BAT - [решено] замена set str2=%str1:.zip/=.zip/!% глючит на пробелах?! | akrav | Скриптовые языки администрирования Windows | 5 | 12-02-2008 11:54 | |
CMD/BAT - [решено] рубка строки “c:\example\..\example.zip\..\ example.doc” в “c:\example\.\example.zip | akrav | Скриптовые языки администрирования Windows | 12 | 08-02-2008 10:28 |
|