<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: Копировани файлов без перезаписи]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=11668</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11668&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Копировани файлов без перезаписи».]]></description>
		<lastBuildDate>Tue, 07 Jun 2016 17:57:38 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: Копировани файлов без перезаписи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104893#p104893</link>
			<description><![CDATA[<p>Стратегически мысль верная, т.к. в методе такой опции <a href="https://msdn.microsoft.com/ru-ru/library/windows/desktop/bb787866(v=vs.85).aspx">нет</a>, поэтому придётся проверять по </p><div class="codebox"><pre><code>If Not FSO.FileExists(FSO.BuildPath(FolderNet, file.name))</code></pre></div><p>Если бы задача стояла иначе, то можно было бы копировать без цикла по *.* (опция - 128) или .Items).<br />Насчёт прерванной связи не в курсе, под рукой нет сетевого.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 07 Jun 2016 17:57:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104893#p104893</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Копировани файлов без перезаписи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104889#p104889</link>
			<description><![CDATA[<p><strong>Flasher</strong></p><p>Нашёл способ копировать пофайлово. <br />Даже сделал вариант с&nbsp; CopyHere</p><br /><p>Вот он.</p><br /><br /><div class="codebox"><pre><code>
Set objWshNetwork = CreateObject(&quot;WScript.Network&quot;)
Set objShell = CreateObject(&quot;Shell.Application&quot;)
On Error Resume Next
objWshNetwork.RemoveNetworkDrive &quot;n:&quot;, True, True
Err.Clear()

objWshNetwork.MapNetworkDrive &quot;n:&quot;,&quot;\\132.316.313.315\sare&quot;, &quot;true&quot;,&quot;networkuser&quot;,&quot;fgdfgdsM&quot; 
If Err.Number Then
	WScript.echo &quot;Сетевой диск не подключился. Сообщите об этом администратору.&quot; &amp; &quot; &quot; &amp; Err.Number &amp; &quot; - &quot;  &amp; Err.Description
Else
Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Dim fso, FolderNet, FolderLocal 
FolderLocal = &quot;C:\Users\&quot;   
FolderNet =&quot;n:\goto&quot;

Set LogFile = FSO.OpenTextFile(&quot;C:\Distr\copy.log&quot;, 8, True)
LogFile.WriteLine &quot; &quot;
LogFile.WriteLine Now &amp; &quot; --- Начало процесса копирования ---&quot;

If Not FSO.FolderExists(FolderLocal) Then
    LogFile.WriteLine Now &amp; &quot; ------ Папка: &#039;&quot; &amp; FolderLocal &amp; &quot;&#039; - не существует&quot;
&#039;    WScript.echo &quot;Папка: &quot; &amp; &quot; &quot; &amp; FolderLocal &amp; &quot; : не существует&quot;

If Not FSO.FolderExists(FolderNet) Then
    LogFile.WriteLine Now &amp; &quot; ------ Папка: &#039;&quot; &amp; FolderNet &amp; &quot;&#039; - не существует&quot;
&#039;    WScript.echo &quot;Папка: &quot; &amp; &quot; &quot; &amp; FolderNet &amp; &quot; : не существует&quot;
LogFile.Close
WScript.Quit
End If
End If

Set objFolder = fso.GetFolder(FolderLocal)
Set objColFiles = objFolder.Files

For Each file In objColFiles

LogFile.WriteLine Now &amp; &quot; ===== Файл: &quot; &amp;&quot;&#039;&quot; &amp; file.Name &amp; &quot;&#039; - &quot; &amp; round(file.Size/1024,2) &amp; &quot;КБ&quot; &amp;  &quot; Начало обработки.&quot;
   objShell.NameSpace(FolderNet).CopyHere FolderLocal &amp; &quot;\&quot; &amp; file.Name
     If Err.Number &lt;&gt; 0 And Err.Number &lt;&gt; 58 Then
      LogFile.WriteLine Now &amp; &quot; ------ Копирование прошло с ошибками. &quot; &amp; Err.Number &amp; &quot; - &quot;  &amp; Err.Description
      WScript.echo &quot;Копирование прошло с ошибками. Сообщите об этом администратору.&quot; &amp; &quot; &quot; &amp; Err.Number &amp; &quot; - &quot;  &amp; Err.Description
     else
      LogFile.WriteLine Now &amp; &quot; ======Файл: &quot; &amp;&quot;&#039;&quot; &amp; file.Name &amp;&quot;&#039;&quot; &amp; &quot; Скопирован или существует.&quot;
    End If

Next


objWshNetwork.RemoveNetworkDrive &quot;n:&quot;, True, True
LogFile.WriteLine Now &amp; &quot; --- Конец процесса копирования ---&quot;
LogFile.Close
End if








</code></pre></div><p>Но всплыли опять грабли<br />Файл в папке назначения создаётся сразу и размером как и исходный файл.<br />Если например прервалась связь, остаётся битый файл. Размером и именем не отличающийся от оригинала.</p><p>И с CopyHere не понял как не заменять имеющиеся файлы вообще.</p><p>Стратегически, как я думаю, нужно копать в сторону предварительной проверки наличия и сравнения файлов. И копировать только то чего не хватает.</p>]]></description>
			<author><![CDATA[null@example.com (TAluberT)]]></author>
			<pubDate>Tue, 07 Jun 2016 16:52:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104889#p104889</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Копировани файлов без перезаписи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104778#p104778</link>
			<description><![CDATA[<p>По логике он должен пропускать файлы, которые уже есть в папке, а также те, у которых нет расширений.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Mon, 06 Jun 2016 10:50:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104778#p104778</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Копировани файлов без перезаписи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104761#p104761</link>
			<description><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Критерием может быть запрет на скрытые/системные файлы.</p></blockquote></div><p>В том-то и дело, что нет.<br /> Для экспиремента. Взял большой файл и насоздавал кучу маленьких, правой кнопкой мыши.<br />Если папка назначения пуста, скрипт копирует все, если нет то он пропускает файлы начинающиеся со слова &quot;Новый&quot; или &quot;Рисунок&quot; и при этом копирует Многие другие, например начинающиеся со слова &quot;Архив&quot; </p><p>Если в папке назначения после прогона скрипта&nbsp; удалить файл с &quot;Архив&quot; он его при повторном запуске скрипта тоже заново не копирует.<br />Что-то я делаю не так...</p>]]></description>
			<author><![CDATA[null@example.com (TAluberT)]]></author>
			<pubDate>Mon, 06 Jun 2016 08:45:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104761#p104761</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Копировани файлов без перезаписи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104649#p104649</link>
			<description><![CDATA[<p>Критерием может быть запрет на скрытые/системные файлы.<br />Скрипт можно сократить:<br /></p><div class="codebox"><pre><code>Set objWshNetwork = CreateObject(&quot;WScript.Network&quot;)
On Error Resume Next
objWshNetwork.MapNetworkDrive &quot;n:&quot;,&quot;\\111.116.113.115\\Журналы событий&quot;, &quot;true&quot;,&quot;networkuser&quot;,&quot;XXX&quot; 
If Err.Number Then
	WScript.echo &quot;Копирование прошло с ошибками. Сообщите об этом администратору.&quot;&amp; &quot; &quot; &amp; Err.Number &amp; &quot; - &quot;  &amp; Err.Description
Else
	CreateObject(&quot;Scripting.FileSystemObject&quot;).CopyFile &quot;C:\Users\*.*&quot;, &quot;N:\goto\&quot;, 0
    If Err.Number &lt;&gt; 0 And Err.Number &lt;&gt; 58 Then _
    WScript.echo &quot;Копирование прошло с ошибками. Сообщите об этом администратору.&quot; &amp; &quot; &quot; &amp; Err.Number &amp; &quot; - &quot;  &amp; Err.Description
End If
objWshNetwork.RemoveNetworkDrive &quot;n:&quot;, True, True</code></pre></div><p>Чтобы избежать проблемы можно попробовать CopyHere.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Fri, 03 Jun 2016 15:00:17 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104649#p104649</guid>
		</item>
		<item>
			<title><![CDATA[VBS: Копировани файлов без перезаписи]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104646#p104646</link>
			<description><![CDATA[<p>Добрый день.</p><p>Начал изучать vbs c простой задачи: </p><p> Подключить сетевой диск, от определённого пользователя.<br />&nbsp; Скопировать на него несколько файлов, перезаписывать не нужно.<br />&nbsp; &nbsp;Отключить сетевой диск.</p><p>Проблема в следующем <br /> Эта редиска копирует вновь созданные файлы, но только какие ему нравятся, критерий понять не могу.</p><p>Если поставить перезапись, то все файлы копируются.</p><div class="codebox"><pre><code>
On Error Resume Next
Set objWshNetwork = CreateObject( &quot;WScript.Network&quot; )
Set objShell = CreateObject(&quot;Shell.Application&quot;)
objWshNetwork.MapNetworkDrive &quot;n:&quot;,&quot;\\111.116.113.115\\Журналы событий&quot;, &quot;true&quot;,&quot;networkuser&quot;,&quot;XXX&quot; 
    If Err.Number Then
      WScript.echo &quot;Копирование прошло с ошибками. Сообщите об этом администратору.&quot;&amp; &quot; &quot; &amp; Err.Number &amp; &quot; - &quot;  &amp; Err.Description
   else
Dim fso, FolderName2, FolderName1 

Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
FolderName1 = &quot;C:\Users\*.*&quot;   
FolderName2 =&quot;N:\goto&quot;

fso.CopyFile FolderName1, FolderName2, 0
    If Err.Number Then
     If Err.Number &lt;&gt; 58 Then
      WScript.echo &quot;Копирование прошло с ошибками. Сообщите об этом администратору.&quot;&amp; &quot; &quot; &amp; Err.Number &amp; &quot; - &quot;  &amp; Err.Description
     End if
    End if
  End if
WScript.Sleep 60000*0.2
objWshNetwork.RemoveNetworkDrive &quot;n:&quot;, true, true  

.</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (TAluberT)]]></author>
			<pubDate>Fri, 03 Jun 2016 14:22:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104646#p104646</guid>
		</item>
	</channel>
</rss>
