Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Архивация профиля Thunderbird программой 7-zip 4.65

Ответить
Настройки темы
[решено] Архивация профиля Thunderbird программой 7-zip 4.65

Аватара для SeRGi-uS

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Цитировать


Здравствуйте! Помогите решить следующую проблему с помощью 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
Благодарности: 3

Профиль | Отправить PM | Цитировать


Bat To Exe Converter поможет! сайт http://www.f2ko.de/English/b2e/index.php
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:49, 13-05-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для SeRGi-uS

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Цитировать


Да, замечательная программа "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


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить 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


Аватара для SeRGi-uS

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Цитировать


Спасибо FlatX007 за помощь. Название файла только почему-то не срабатывает. В названии не получаются значения переменных ( что-то типа МойКомпьютер_администратор_1.7z).

Отправлено: 20:08, 14-05-2009 | #5


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Что-то типа.. это воодушевляющий ответ ... а точное название никак ?

Что бы не путаться после возврата в переменную каких либо даных нужно прописать вот так
Код: Выделить весь код
$Pach_7Z = "E:\backupMail\" & @ComputerName & "_" & @UserName & "_" & @WDAY & ".7z"
MsgBox(0,'', $Pach_7Z)
Смотриш, что выдало сообщение и сравниваеш с тем что должно быть ... редактируеш

Отправлено: 23:15, 14-05-2009 | #6


Аватара для SeRGi-uS

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Цитировать


Да, в форму выводится как и нужно. Как это сделать в названии файла? Пробовал разные варианты - пока не получается. Как-то надо это перенаправить из формы?

Отправлено: 16:38, 16-05-2009 | #7


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить 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


Аватара для SeRGi-uS

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Цитировать


FlatX007 огромнейшее Вам спасибо. Решение очень интересное. Попробовал Ваш скрипт - файл создается отлично, только в папке
@AppDataDir & "\Thunderbird\" упаковывается *.ini файл, а хотелось чтобы упаковывались в архив всё что находится в папке @AppDataDir & "\Thunderbird и файлы и папки ( там находится сам профиль программы со множеством вложенных папок). Вижу что выставлено расширение *.* для архива, то есть должно упаковывать файлы и папки. Думаю как настроить архивацию, чтобы захватить и папки.

Отправлено: 11:10, 17-05-2009 | #9


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Архивация профиля Thunderbird программой 7-zip 4.65

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Архиваторы - [решено] [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




 
Переход