Opt("TrayIconDebug",1)
#include <Date.au3>
#include "Zip.au3"
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Указываем переменные для дальнейшей работы
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$Base = "C:\Base" ; Откуда берём базу Навижин
$Bases = "C:\Bases" ; Откуда берём базу Навижин
$SqlData = @ProgramFilesDir & "\Microsoft SQL Server\MSSQL.1\MSSQL\Data" ; Путь к базам SQL
$Data = @MDAY & "-" & @MON & "-" & @YEAR ; Получаем текущую дату
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Останавливаем службу SQL Server
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$aRet_Info = _Service_Proc("MSSQLSERVER", "start")
If ProcessExists("sqlservr.exe") Then
Else
Run("sqlservr.exe", @ProgramFilesDir & "\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\")
EndIf
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Получаем пути из ini файла для копирования и копируем
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if FileExists (@ScriptDir & "\Backup.ini") Then ; Проверка на наличие данного файла, если нет то проходим мимо
$sPath_ini=@ScriptDir & "\Backup.ini" ; Файл настроек IP сетевого хранилища
$A = IniRead($sPath_ini, "A", "Patch","") ; Путь на диск D в папку Backup (D:\Backup)
$B = IniRead($sPath_ini, "B", "Patch","") ; Путь на диск L
$IP = IniRead($sPath_ini, "IP", "Patch","") ; Получаем из INI IP адрес и путь к папке сетевого хранилища
DirCopy ($Base, $A & "\" & $Data & "\Base", 1) ;Копируем базу Навижин в $A
DirCopy ($Bases, $A & "\" & $Data & "\Bases", 1) ;Копируем базу Навижин в $A
DirCopy ($SqlData, $A & "\" & $Data & "\Data", 1) ;Копируем базу SQL в $A
DirCopy ($Base, $B & "\" & $Data & "\Base", 1) ;Копируем базу Навижин в $B
DirCopy ($Bases, $B & "\" & $Data & "\Bases", 1) ;Копируем базу Навижин в $B
DirCopy ($SqlData, $B & "\" & $Data & "\Data", 1) ;Копируем базу SQL в $B
DirCopy ($Base, $IP & "\" & $Data & "\Base", 1) ;Копируем базу Навижин в $IP
DirCopy ($Bases, $IP & "\" & $Data & "\Bases", 1) ;Копируем базу Навижин в $IP
DirCopy ($SqlData, $IP & "\" & $Data & "\Data", 1) ;Копируем базу SQL в $IP
Else
$Backup = "D:\Backup\" ; Путь 1 для резервных копий
$Backup_D = $Backup & $Data ; Полный путь с именем каталога на диске D
DirCopy ($Base, $Backup & $Data & "\Base", 1) ;Копируем базу Навижин
DirCopy ($Bases, $Backup & $Data & "\Bases", 1) ;Копируем базу Навижин
DirCopy ($SqlData, $Backup & $Data & "\Data", 1) ;Копируем базу SQL
EndIf
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Стартуем службу SQL Server
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$aRet_Info = _Service_Proc("AmmyyAdmin", "start")
If ProcessExists("AA_v3.exe") Then
Else
Run("sqlservr.exe", @ProgramFilesDir & "\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\")
EndIf
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Функции для старта и остановки службы
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Func _Service_Proc($sService, $sAction)
Local $iPID = Run('net ' & $sAction & ' "' & $sService & '"', '', @SW_HIDE, 2 + 4)
Local $sStdRead, $sStdErrRead, $stBuffer, $aRet, $aRet[2]
While 1
$sStdRead &= StdoutRead($iPID)
If @error Then ExitLoop
$sStdErrRead &= StderrRead($iPID)
If @error Then ExitLoop
WEnd
$aRet[0] = $sStdRead
$aRet[1] = $sStdErrRead
For $i = 0 To 1
$stBuffer = DllStructCreate("char[" & StringLen($aRet[$i])+1 & "]")
$aOemToChar = DllCall("User32.dll", "int", "OemToChar", "str", $aRet[$i], "ptr", DllStructGetPtr($stBuffer))
If Not IsArray($aOemToChar) Then ContinueLoop ;ошибка DLL
If $aOemToChar[0] = 0 Then ContinueLoop ;ошибка функции
$aRet[$i] = DllStructGetData($stBuffer, 1)
Next
Return $aRet
EndFunc
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Создаём архив того что скопировали
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$Zip_Data = $Data & ".zip"
if FileExists (@ScriptDir & "\Backup.ini") Then
If FileExists($A & $Zip_Data) Then
Else
$Zip = _Zip_Create($A & $Zip_Data)
_Zip_AddFolder($Zip, $A & $Data )
EndIf
Else
$Zip = _Zip_Create($Backup & $Zip_Data)
_Zip_AddFolder($Zip, $Backup_D)
EndIf
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Удаление старых папок и архивов
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$Search = FileFindFirstFile($A & "*.*")
If $Search = -1 Then
MsgBox(0, "Ошибка", "Файлы не найдены")
Else
Dim $ar[4]
While 1
$File = FileFindNextFile($Search)
If @error Then ExitLoop
$ar = StringSplit(StringTrimRight($File, 4), "-")
$str = $ar[3] & "/" & $ar[2] & "/" & $ar[1]
If _DateDiff("D", $str, @YEAR & "/" & @MON & "/" & @MDAY) > 4 Then
FileDelete($A & $File)
DirRemove($A & StringTrimRight($File, 3), 1)
EndIf
WEnd
FileClose($Search)
EndIf