1

Тема: AutoHotkey + ERUNT = Удобный бэкап реестра

А вам известна чудо прожка ERUNT ? Если нет, то настоятельно рекомендую. С её помощью можно очень легко делать бэкап реестра и восстанавливать его. Прог для таких целей существует немало, но если учесть, что ERUNT не требует установки, может работать из командной строки, а сам процес хоть сохранения, хоть восстановления занимает максимум 2 секунды (перезагрузка после восстановления, не в счет), то, как говорится, маст хэв. В комплекте с ней идут две крошечные утилитки для автоматизации бэкапов и для сжатия реестра. А весь комплект целиком весит 500 кб (!). К тому же, программа бесплатна. Я её мгновенно полюбил как незаменимый инструмент при экспериментах с реестром. Юзаю уже года полтора-два и ни разу не глюканула.
Найти это чудо немецкой мысли можно здесь http://www.larshederer.homepage.t-online.de/erunt. (Предложат пройти на другие сайты, поэтому вот прямой линк на закачку http://www.aumha.org/downloads/erunt.zip). На сайте можно взять русификатор, но я бы не рекомендовал его использовать по причине его кривости. На сайте же есть и крошечный vbs-скрипт для автоматизации бэкапа (правда, кажется, он на немецком).
Этот vbs-скрипт показался мне малофункциональным, поэтому я решил написать свой (AHK). Собственно это был один из первых AutoHotkey'ных скриптов, который я написал. Теперь я его немного подредактировал и предлагаю вам. Если поместить его в автозагрузку, то он будет ежедневно создавать бэкап реестра. Можно указать, чтобы бэкапилось в подпапки по дням недели, можно указать, чтобы бэкап создавался только один раз в день. И, конечно, можно запускать скрипт "вручную" (перед тем как поковыряться в реестре). Короче, посмотрите сами. Скриптец незатейлив.
В качестве бонуса, прикладываю свой перевод для ERUNT'а. Возможно, перевод и не высший, но точно лучше предлагаемого на оф. сайте. В архиве 4 файла, которые нужно поместить в папку с ERUNT'ом.

;*******************************************************************************
; AutoHotkey Version:   1.0.44.08+
; Автор:                Androgen Belkin
; Имя скрипта:          ERUNT_Run.ahk (v.1.1)
;*******************************************************************************
; Создание бэкапа реестра с помощью ERUNT.
;*******************************************************************************
#NoEnv      ; запрещаем имена переменных как у переменных окружения (повышаем производительность скрипта)
#NoTrayIcon ; не отображать иконку скрипта в трее

; ========== НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ ===============
ERUNT_Path = D:\Totalcmd\Utilits\Erunt\ERUNT.EXE ; путь к экзешнику
Dest_Path = G:\_MyRegBackup ; путь к целевой папке (куда сохранять резервные копии)
Day_Sub_Dir = 1          ; создавать ли подпапку с днем недели (1 - "да", любое другое значение - "нет")
Sysreg = 1               ; сохранять ли системный реестр (1 - "да")
Curuser = 1              ; сохранять ли реестр текущего пользователя (1 - "да")
Otherusers = 0           ; сохранять ли загруженный реестр других пользователей (1 - "да")
Noconfirmdelete = 1      ; НЕ подтверждать удаление уже существующих резервных копий в папке назначения (1 - НЕ подтверждать)
Noprogresswindow = 0     ; НЕ показывать окно прогресса выполнения (1 - НЕ показывать)
Only_Once_In_Day = 0     ; создавать бэкап только один раз в день или при каждом входе в систему (1 - один раз в день)
Final_Msg = 1            ; показывать ли сообщение об окончании бэкапа (1 - "да")
Title = ERUNT. Бэкап реестра ; заголовок для окон сообщений
; ========== КОНЕЦ НАСТРОЕК ПОЛЬЗОВАТЕЛЯ ==========

; ПРОВЕРЯЕМ ПРАВИЛЬНОСТЬ УКАЗАНИЯ ПУТЕЙ
IfNotExist, %ERUNT_Path% ; если ERUNT.exe не найден, то...
{
    MsgBox, 0, %Title%, %A_Space%            Неверно задан путь к ERUNT.exe`nПроверьте НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ в скрипте
    ExitApp ; закончить скрипт
}
If Day_Sub_Dir = 1 ; если указано создавать подпапку с именем дня недели, то...
{
    FormatTime, Cur_Day,, dddd ; получаем сегодняшний день недели
    StringUpper, Cur_Day, Cur_Day, T ; делаем первую букву дня недели заглавной (мне так красивей)
    Dest_Path = %Dest_Path%\%Cur_Day% ; добавляем день недели к целевой папке
}
IfNotExist, %Dest_Path% ; если целевой папки не существует, то...
{
    FileCreateDir, %Dest_Path% ; создать целевую папку
    If ErrorLevel != 0 ; если создать папку не удалось, то...
    {
        MsgBox, 48, %Title%, Не могу создать папку:`n"%Dest_Path%" ; показать сообщение
        ExitApp ; закончить скрипт
    }
}

; ПРОВЕРЯЕМ, НУЖНО ЛИ СОЗДАВАТЬ РЕЗЕРВНУЮ КОПИЮ ИЛИ ОНА СЕГОДНЯ УЖЕ БЫЛА СОЗДАНА
If ( FileExist( Dest_Path "\ERDNT.INF" ) AND Only_Once_In_Day = 1 )
{ ; если бэкап уже существует и указано сохранять только раз в день, то...
    FileReadLine, Backup_Date, %Dest_Path%\ERDNT.INF, 2 ; читаем вторую строку этого файла (там написана дата)
    FormatTime, Cur_Date,, dd.MM.yyyy ; получаем текущую дату в том же формате
    If InStr( Backup_Date, Cur_Date ) ; если даты совпадают, то...
        ExitApp ; закончить скрипт
}

; ФОРМИРУЕМ КОМАНДНУЮ СТРОКУ
Cmd_String = "%Dest_Path%" ; берем путь в кавычки (на случай, если в нем есть пробелы)
If Sysreg = 1 ; если указано сохранять системный реестр, то...
    Cmd_String = %Cmd_String% sysreg ; добавить команду в командную строку
If Curuser = 1 ; если указано сохранять реестр текущего пользователя, то...
    Cmd_String = %Cmd_String% curuser ; добавить команду в командную строку
If Otherusers = 1 ; если указано сохранять загруженный реестр других пользователей, то...
    Cmd_String = %Cmd_String% otherusers ; добавить команду в командную строку
If Noconfirmdelete = 1 ; если указано не подтверждать удаление уже существующих резервных копий, то...
    Cmd_String = %Cmd_String% /noconfirmdelete ; добавить команду в командную строку
If Noprogresswindow = 1 ; если указано не показывать окно прогресса выполнения, то...
    Cmd_String = %Cmd_String% /noprogresswindow ; добавить команду в командную строку

; БЭКАПИМ РЕЕСТР
RunWait, %ERUNT_Path% %Cmd_String% ; запускаем бэкап реестра (и ждем окончания его работы)
If Final_Msg = 1 ; если указано показывать финальное сообщение, то...
    MsgBox, 0, %Title%, Резервное копирование реестра завершено.`n`nРеестр сохранен в папку:`n`n"%Dest_Path%" ; показать сообщение
Post's attachments

Erunt.Transl.zip 5.49 kb, 982 downloads since 2006-07-31 

You don't have the permssions to download the attachments of this post.
Крокодил, крокожу и буду крокодить! (Твёрдое обещание нетрезвого кодера).