<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Создание резервных копий]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=11512</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11512&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Создание резервных копий».]]></description>
		<lastBuildDate>Sat, 21 May 2016 10:22:25 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Создание резервных копий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104022#p104022</link>
			<description><![CDATA[<p>Данный скрипт каждые 15 мин проверяет наличие изменений размеров исходного объекта относительно резервной копии и если размеры не совпадают переписывает копию. Особенности скрипта:<br />-Добавляем запись -Ctrl+S;<br />-Выполнить экстренную проверку-Ctrl+R;<br />-Можно настроить резервное копирование как файла так и папки;<br />-Выбор метода сохранения(1-через каждые пятнадцать минут при наличии изменений (по умолчанию), <br />	2-(принудительный) каждые 15 мин);<br />-При выполнении копирования раздается звуковой сигнал<br /> и выскакивает информационное окно (если не нужно-удалить строки MsgBox);<br /> </p><div class="codebox"><pre><code>MsgBox %A%`n%A_Size%`n%B%`n%B_Size%</code></pre></div><p> </p><p>-Новые записи будут добавлены в низ скрипта. Удалять сценарии можно вручную-<br />	внизу скрипта находим нужную строку и удаляем;<br /></p><div class="codebox"><pre><code>
s2:
№:=1,tip1_1:=1,tip2_1:=1,A1:=&quot;D:\Программы\AHK\автохоткей.docx&quot;,B1:=&quot;C:\Users\sabir\OneDrive\Документы&quot;
№:=2,tip1_2:=1,tip2_2:=1,A2:=&quot;D:\Программы\AHK\автохоткей.docx&quot;,B2:=&quot;C:\YandexDisk\автохоткей&quot;
№:=3,tip1_3:=2,tip2_3:=1,A3:=&quot;D:\Программы\AHK\скрипты&quot;,B3:=&quot;C:\Users\sabir\OneDrive\Документы&quot;
№:=4,tip1_4:=2,tip2_4:=1,A4:=&quot;D:\Программы\AHK\скрипты&quot;,B4:=&quot;C:\YandexDisk\автохоткей&quot;
№:=5,tip1_5:=2,tip2_5:=1,A5:=&quot;D:\Программы\Програмирование&quot;,B5:=&quot;C:\Users\sabir\OneDrive\Документы&quot;
№:=6,tip1_6:=2,tip2_6:=1,A6:=&quot;D:\Программы\Програмирование&quot;,B6:=&quot;C:\YandexDisk&quot;
Return
</code></pre></div><p>Код:<br /></p><div class="codebox"><pre><code>
#SingleInstance force
SetBatchLines, -1
SetTimer, s1, 900000 ;проверка изменений в файлах(папках) каждые 15 мин.
s1: 
Gosub, s2
loop, %№%
{
	A:=A%A_Index%,B:=B%A_Index%
	if (A=&quot;&quot; or B=&quot;&quot;) ;если задачи были удалены(переменные не существуют)
	continue ;прокрутка цикла вперед на №+1
	SplitPath, A, A_Name
	if (tip1_%A_Index%=1) ;если копируем файл
	{
		FileGetSize, A_Size, %A%  ; Размер в байтах
		FileGetSize, B_Size, %B%\%A_Name%  ; Размер в байтах
		if (A_Size=B_Size)
		res:=false
		else
		res:=true ;если размеры не совпадают-копирование
		IfNotExist, %A%
		MsgBox, Исходный файл не существует!`n%A%???
		else if (res or tip2_%A_Index%=2)
		{
		SoundBeep ;сигнал-идет копирование
		MsgBox %A%`n%A_Size%`n%B%`n%B_Size%
		FileCopy, %A%, %B%, 1
		}
	}
	else if (tip1_%A_Index%=2) ;если копируем папку
	{
		A_Size:=0
		Loop, %A%\*.*, , 1
		A_Size+=%A_LoopFileSize%
		B_Size:=0
		Loop, %B%\%A_Name%\*.*, , 1
		B_Size+=%A_LoopFileSize%
		if (A_Size=B_Size)
		res:=false
		else
		res:=true ;если размеры не совпадают-копирование
		IfNotExist, %A%
		MsgBox, Исходная папка не существует!`n%A%???
		else if (res or tip2_%A_Index%=2)
		{
		SoundBeep ;сигнал-идет копирование
		MsgBox %A%`n%A_Size%`n%B%`n%B_Size%
		FileRemoveDir, %B%\%A_Name%, 1 ;предварительно удаляем папку
		FileCopyDir, %A%, %B%\%A_Name%, 1 ;копируем папку
		}
	}
}
Return 
  
^vk53:: ;Ctrl+S-новая запись
№:=0 
InputBox, tip1, Выберите тип объекта(файл`,папка),
(
Копию чего вы хотите настроить?`nфайла-введите &quot;1&quot;
папки-введите  &quot;2&quot;
)
if tip1=1
{
t1=--------------------------------Выберите файл(оригинал)
t2=для резервного копирования--------------------------
FileSelectFile, A, , ,%t1% %t2% 
if A=
Return 
FileSelectFolder, B,  ,  , Выберите папку для сохранения копий
if B=
Return 
}
else if tip1=2
{
t1=   Выберите папку(оригинал)
t2=для резервного копирования
FileSelectFolder, A, , ,%t1% %t2% 
if A=
Return 
FileSelectFolder, B,  ,  , Выберите папку для сохранения копий
if B=
Return  
}
else
Return

InputBox, tip2, Настройте алгоритм сохранения,
(
Выберите критерий сохранения:`n`nчерез каждые 15мин при изменении размера
объекта(по умолчанию)-введите  &quot;1&quot;
через каждые 15мин-введите &quot;2&quot;
)
if (tip2!=2)
tip2:=1
 
Loop, read, %A_ScriptFullPath%
SumStr:=A_Index ;определяем общее количество строк данного скрипта
ScriptName:=SubStr(A_ScriptName, 1, InStr(A_ScriptName, &quot;.&quot;) -1) 
;определяем имя скрипта без расширения
Loop, read, %A_ScriptFullPath%, %A_WorkingDir%\%ScriptName%.txt
{
if (A_Index=SumStr)
break
FileAppend, %A_LoopReadLine%`n
}
Gosub, s2 
№+=1 ;порядковый номер новой задачи
Rec=
(
№:=%№%,tip1_%№%:=%tip1%,tip2_%№%:=%tip2%,A%№%:=&quot;%A%&quot;,B%№%:=&quot;%B%&quot;
Return 
)
FileAppend, %Rec%, %A_WorkingDir%\%ScriptName%.txt
FileDelete, %A_ScriptFullPath%
FileMove, %A_WorkingDir%\%ScriptName%.txt, %A_WorkingDir%\%ScriptName%.ahk
Reload

^vk52:: ;Ctrl+R выполнить экстренную проверку
Gosub, s1 
Return
 
s2:
Return
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (sabir.yanin2014)]]></author>
			<pubDate>Sat, 21 May 2016 10:22:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104022#p104022</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Создание резервных копий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103300#p103300</link>
			<description><![CDATA[<p><strong>becauseim</strong><br />Присоединяюсь, было бы отлично иметь такой скрипт для бэкапа, плюс возможность установки таймера (каждые 5 минут), для постоянно изменяющихся файлов.</p>]]></description>
			<author><![CDATA[null@example.com (Balux)]]></author>
			<pubDate>Tue, 03 May 2016 15:18:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103300#p103300</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Создание резервных копий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103290#p103290</link>
			<description><![CDATA[<p><strong>sabir.yanin2014</strong>, скрипт резервно копирует при каждой перезагрузке ПК? На мой взгляд, было бы логичнее, если это происходило после изменения синхронизируемого файла или дополнения файлами синхронизируемой директории. Если такое возможно, конечно.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Tue, 03 May 2016 10:34:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103290#p103290</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Создание резервных копий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103287#p103287</link>
			<description><![CDATA[<p>Добавлена возможность резервного копирования папок:<br /></p><div class="codebox"><pre><code>
if (A_TickCount&gt;120000)
{
InputBox, tip, Выберите тип объекта(файл`,папка),
(
Копию чего вы хотите настроить?`nфайла-введите &quot;1&quot;
папки-введите  &quot;2&quot;
)
	if tip=1
	{
	t1=-----------------------------------------------Выберите файл
	t2=для резервного копирования--------------------------
	FileSelectFile, FileDir, , ,%t1% %t2% 
	if FileDir=
	Return 
	FileSelectFolder, RezervCopy,  ,  , Выберите папку для сохранения копий
	if RezervCopy=
	return
	t3=Резервное копирование:`n&quot;%FileDir%&quot;
	t4=`n                в папку:`n&quot;%RezervCopy%&quot;
	t5=`nбудет выполнено после `nперезагрузки компьютера
	MsgBox %t3%%t4%%t5%
	Rec=FileCopy, %FileDir%, %RezervCopy%, 1
	FileAppend, `n%Rec%, %A_ScriptFullPath%
	}
	else if tip=2
	{
	t1=   Выберите папку
	t2=для резервного копирования
	FileSelectFolder, FileDir, , ,%t1% %t2% 
	if FileDir=
	Return 
	FileSelectFolder, RezervCopy,  ,  , Выберите папку для сохранения копий
	if RezervCopy=
	return
	t3=Резервное копирование:`n&quot;%FileDir%&quot;
	t4=`n                в папку:`n&quot;%RezervCopy%&quot;
	t5=`nбудет выполнено после `nперезагрузки компьютера
	MsgBox %t3%%t4%%t5%
	SplitPath, FileDir, FolderName
	; Извлечь из полного пути только имя папки.
	Rec=FileCopyDir, %FileDir%, %RezervCopy%\%FolderName%, 1
	FileAppend, `n%Rec%, %A_ScriptFullPath%
	}
	Return 
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (sabir.yanin2014)]]></author>
			<pubDate>Mon, 02 May 2016 18:29:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103287#p103287</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Создание резервных копий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=102900#p102900</link>
			<description><![CDATA[<p>Нет ли на примете скрипта, синхронизирующего содержимое двух папок по содержанию первой (исходной)? То есть, когда вторая отражает все изменения, происходящие в первой?</p>]]></description>
			<author><![CDATA[null@example.com (DD)]]></author>
			<pubDate>Sat, 23 Apr 2016 20:28:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=102900#p102900</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Создание резервных копий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=102733#p102733</link>
			<description><![CDATA[<p><strong>sabir.yanin2014</strong>, напишите решение. Зачем удалять?</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Tue, 19 Apr 2016 20:21:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=102733#p102733</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Создание резервных копий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=102732#p102732</link>
			<description><![CDATA[<p>С вопросом разобрался. А удалять сообщения как то можно?</p>]]></description>
			<author><![CDATA[null@example.com (sabir.yanin2014)]]></author>
			<pubDate>Tue, 19 Apr 2016 18:53:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=102732#p102732</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Создание резервных копий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=102731#p102731</link>
			<description><![CDATA[<p>Чтобы защитить важные документы от возможной утраты логично создать обновляемую резервную копию этих документов. Хотя таких программ очень много,&nbsp; я решил написать собственную. Утилита работает следующим образом: 1)при&nbsp; запуске,&nbsp; &nbsp;появляется диалоговое окно с предложением выбрать файл для резервного копирования; 2) Появляется окно выбора папки где мы будем сохранять резервные копии; 3) Появится сообщение,в котором будет сказано что резервная копия будет создана после перезагрузки компьютера<br /></p><div class="codebox"><pre><code>
if (A_TickCount&gt;60000) ; позднее одной минуты с момента запуска компьютера
{
t1=-----------------------------------------------Выберите файл
t2=для резервного копирования--------------------------
FileSelectFile, FileDir, , ,%t1% %t2% 
if FileDir=
Return 
FileSelectFolder, RezervCopy,  ,  , Выберите папку для сохранения копий
if RezervCopy=
return
t3=Резервное копирование:`n&quot;%FileDir%&quot;
t4=`n                в папку:`n&quot;%RezervCopy%&quot;
t5=`nбудет выполнено после `nперезагрузки компьютера
MsgBox %t3%%t4%%t5%
Rec=FileCopy, %FileDir%, %RezervCopy%, 1
FileAppend, `n%Rec%, %A_ScriptFullPath%
Return 
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
</code></pre></div><p>Скрипт обновится:<br /></p><div class="codebox"><pre><code>
if (A_TickCount&gt;60000)  ; позднее одной минуты с момента запуска компьютера
{
t1=-----------------------------------------------Выберите файл
t2=для резервного копирования--------------------------
FileSelectFile, FileDir, , ,%t1% %t2% 
if FileDir=
Return 
FileSelectFolder, RezervCopy,  ,  , Выберите папку для сохранения копий
if RezervCopy=
return
t3=Резервное копирование:`n&quot;%FileDir%&quot;
t4=`n                в папку:`n&quot;%RezervCopy%&quot;
t5=`nбудет выполнено после `nперезагрузки компьютера
MsgBox %t3%%t4%%t5%
Rec=FileCopy, %FileDir%, %RezervCopy%, 1
FileAppend, `n%Rec%, %A_ScriptFullPath%
Return 
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;менее одной минуты с момента запуска компьютера 
FileCopy, C:\My File.txt, D:\, 1
FileCopy, C:\Games\Fallout 4\Fallout4.exe, C:\Users\Андрей\Desktop\N2, 1
FileCopy, D:\программы\автохоткей\автохоткей.docx, C:\Users\Андрей\YandexDisk\автохоткей, 1
</code></pre></div><p>*Ниже черты появилось три директории. Данные записи можно удалять вручную.</p><p>Теперь осталось добавить данный скрипт в автозагрузку. Как это сделать можно посмотреть<br />вот <a href="http://forum.script-coding.com/viewtopic.php?id=11508">здесь</a>. После загрузки компьютера скрипт выполнит копирование, файлы будут перезаписаны.<br />Если исходного файла нет(был случайно удален)&nbsp; ничего не происходит. Резервный файл остается на старом месте. Цель достигнута.</p>]]></description>
			<author><![CDATA[null@example.com (sabir.yanin2014)]]></author>
			<pubDate>Tue, 19 Apr 2016 18:41:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=102731#p102731</guid>
		</item>
	</channel>
</rss>
