<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; CMD/BAT: Резервное копирование]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=10022</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=10022&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Резервное копирование».]]></description>
		<lastBuildDate>Mon, 21 Aug 2023 01:43:12 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: Резервное копирование]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=159061#p159061</link>
			<description><![CDATA[<p>Для резервного копирования можно использовать ту или иную, зависящую от конкретного случая, &quot;обертку&quot; для xcopy. Как вариант, скрипт с диалоговым выбором целевого каталога копирования. Список исходных каталогов для копирования содержится в файле copylist.txt рядом с файлом скрипта. Знак &quot;-&quot; перед путем каталога отменяет его обработку. Пути каталогов заключены в кавычки. Ключ /d xcopy позволяет только обновлять резервные копии файлов.</p><p>ОС Win7</p><p><strong>xcpy.cmd</strong><br /></p><div class="codebox"><pre><code>
@set @x=1/*
::
:: Резервное копирование с помощью xcopy с выбором целевого каталога копирования.
:: Список каталогов для копирования содержится в файле copylist.txt рядом с командным файлом.
:: Знак &quot;-&quot; перед путем каталога отменяет его обработку. Пути каталогов заключены в кавычки.
::

 @echo off
 setlocal enableextensions enabledelayedexpansion

 set df=&quot;%~dp0copylist.txt&quot;

 for /f &quot;tokens=*&quot; %%A in (&#039;cscript /nologo /e:jscript &quot;%~f0&quot;&#039;) do set dir2=%%A
 if /i &quot;%dir2%&quot; equ &quot;&quot; (exit /b 0)

 rem [проверка на слеш в конце строки, на случай если выбран диск]
 if &quot;%dir2:~-1%&quot; equ &quot;\&quot; (set dir2=%dir2:~0,-1%)

 chcp 1251 &gt;nul
 ::-------------------------------------------
 for /f &quot;tokens=*&quot; %%b in (&#039;findstr /r /v &quot;^-&quot; %df%&#039;) do (
	call :dobackup %%b
 )

 exit /b 0

::
:: Копирование с помощью xcopy
::
::--------------------------------------------
:dobackup

 rem [Дополнение целевого пути именем исходного каталога копирования]
 rem [т.е. целевой каталог &quot;C:\Backup&quot; становится &quot;C:\Backup\Myfiles&quot;]

 chcp 866 &gt;nul
 
 set stdir=%1
 set &quot;x=%stdir:~1,-1%.txt&quot;

 rem [выделение каталога как имени файла]
 for /f &quot;usebackq tokens=*&quot; %%A in (&#039;%x%&#039;) do (
	set x1=%%~nA
 )
 set dsdir=&quot;%dir2%\%x1%&quot;

 echo Source: %stdir%
 echo Destination: %dsdir%
 pause

 xcopy %stdir% %dsdir% /w /v /d /s /i /e /h /r /y
 rem xcopy %stdir% %dsdir% /w /i /d /s /e /h /y
 
 rem [Контрольное сообщение - размеры каталогов]
 cscript /nologo /e:jscript &quot;%~f0&quot; %stdir% %dsdir%

 pause
 goto :eof

::--------------------------------------------
*/

 //
 // Диалог выбора целевого каталога на JScript
 //

 var iArgs = WScript.Arguments;
 
 if (iArgs.Count()==0)
 {
	// Вывод диалога выбора каталога
	var oShell = new ActiveXObject(&#039;Shell.Application&#039;);
	var oFolder = oShell.BrowseForFolder(0, &quot;Выбор папки назначения:&quot;, 0, &quot;&quot;);
	
	if (Number(isNaN(oFolder))==1){WScript.Echo(oFolder.Self.Path);}
	WScript.Quit();
 }
 else
 {
	// Сравнение размеров каталогов
	var oScr = new ActiveXObject(&#039;Scripting.FileSystemObject&#039;);

	var f1 = WScript.Arguments.Item(0);
	var f2 = WScript.Arguments.Item(1);
	var s1 = oScr.GetFolder(f1).Size;
	var s2 = oScr.GetFolder(f2).Size;

	WScript.Echo(String(f1 + &#039;: &#039; + s1 + &#039; Bytes\n\r&#039; + f2 + &#039;: &#039; + s2 + &#039; Bytes\n\rDifference:=&#039;+Number(s1-s2).toString() + &#039; Bytes&#039;));
	WScript.Quit();
 }
</code></pre></div><p>Сгенерировать файл copylist.txt(список каталогов для копирования) можно, например таким скриптом (VBScript):</p><p><strong>FolderSelect.vbs</strong><br /></p><div class="codebox"><pre><code>

 &#039; Создание списка каталогов выделенных в проводнике

 Dim oShellApp
 Dim oFs, oStream
 Dim sFilePath, sFileOut

 Set oFs = CreateObject(&quot;Scripting.FileSystemObject&quot;)
 Set oShellApp = CreateObject(&quot;Shell.Application&quot;) 

 sFilePath = WScript.ScriptFullName
 sFileOut = Left(sFilePath,InStrRev(sFilePath, &quot;\&quot;)) &amp; &quot;dirlist.txt&quot;
 Set oStream = oFs.OpenTextFile(sFileOut, 8, True, 0)
 
 &#039;------------------------------------------------------------------ 
 For Each oWindow In oShellApp.Windows
	If InStr(1, LCase(TypeName(oWindow.Document)), &quot;ishellfolderviewdual&quot;) &lt;&gt; 0 Then
		For Each oItem In oWindow.Document.SelectedItems
			If oItem.IsFolder Then
				oStream.WriteLine &quot;&quot;&quot;&quot; &amp; oItem.Path &amp; &quot;&quot;&quot;&quot;
			End If
		Next
	End If
 Next            
 &#039;------------------------------------------------------------------
 oStream.Close()
 MsgBox sFileOut, vbSystemModal, &quot;Reply&quot;
 </code></pre></div><p>Нужно сначала выделить нужные каталоги в Проводнике (можно в разных окнах), после чего запустить скрипт. Чтобы не затрагивать выделенные пункты, ярлык для скрипта нужно предварительно вынести на отдельную панель запуска, например (Win7) - Панель задач - Панели - Создать панель инструментов, указав каталог со скриптом.</p>]]></description>
			<author><![CDATA[null@example.com (Poltergeyst)]]></author>
			<pubDate>Mon, 21 Aug 2023 01:43:12 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=159061#p159061</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Резервное копирование]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=87018#p87018</link>
			<description><![CDATA[<p><strong>atomix</strong><br />По идее <a href="http://allwaysync.com/ru/download.html">Allway Sync</a> должна подойти, там есть опция &quot;При подключении съемного устройства&quot;, есть помимо прочих и DropBox. Пакует, правда, в zip с опциями сжатия, в отличии, скажем, от Toucan.<br />Из портабл есть ещё всякие Synchronize It!, cpnew32, fds, но это для синхронизации больше.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sat, 04 Oct 2014 22:38:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=87018#p87018</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Резервное копирование]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=86990#p86990</link>
			<description><![CDATA[<p>Так он и так на компьютерах у меня стоит и нужные данные по расписанию в папки скидывает и сжимает.<br />А мне надо чтобы, подключил usb hdd и нажал на один и тот же ярлык, и все само собой сделалось на любом компьютере (потом вообще можно автозапуск прикрутить), плюс некоторые файлы в dropbox скинуть и вообще под любые свои капризы настроить можно будет.</p>]]></description>
			<author><![CDATA[null@example.com (atomix)]]></author>
			<pubDate>Fri, 03 Oct 2014 15:02:35 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=86990#p86990</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Резервное копирование]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=86989#p86989</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>…и особо из программ выбирать ничего (платно, не портабельно, слабый функционал или отсутствии автоматического режима).</p></blockquote></div><p>Cobian Backup?!</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 03 Oct 2014 13:46:36 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=86989#p86989</guid>
		</item>
		<item>
			<title><![CDATA[CMD/BAT: Резервное копирование]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=86988#p86988</link>
			<description><![CDATA[<p>Потребовалось мне наладить резевное копирование моих данных и особо из программ выбирать ничего (платно, не портабельно, слабый функционал или отсутствии автоматического режима).<br />Пришлось изучить язык bat файлов и написать собственный скрипт.<br />Он умеет автоматом определять по идентификатору процессора,&nbsp; какой файл с инструкциями запустить.</p><p>Поддерживается два типа резервирования:<br />1) Сжатие в архив с помощью 7-Zip архиватора.<br />2) Синхронизация с помощью nnBackup программы.</p><p>Мне нужна ваша помощь в проверке корректной работы скрипта, а также ваши советы, что еще можно улучшить или добавить в функционал.</p>]]></description>
			<author><![CDATA[null@example.com (atomix)]]></author>
			<pubDate>Fri, 03 Oct 2014 10:51:50 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=86988#p86988</guid>
		</item>
	</channel>
</rss>
