<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; WSH: Нужен скрипт для копирования файлов]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=122</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=122&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «WSH: Нужен скрипт для копирования файлов».]]></description>
		<lastBuildDate>Thu, 11 Nov 2010 07:48:44 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41488#p41488</link>
			<description><![CDATA[<p>Здравствуйте всем! В программировании не силен. <br />Помогите со скриптом в этой ветке.<br />Задача заключается в том, чтобы из папки1(со своей иерархией) прошерстить все файлы и переместить те, которые НЕ ИЗМЕНЯЛИСЬ и НЕ ОТКРЫВАЛИСЬ больше чем заданное время (например год) в папку2 с иерархией папки1.</p>]]></description>
			<author><![CDATA[null@example.com (Sergey_85)]]></author>
			<pubDate>Thu, 11 Nov 2010 07:48:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41488#p41488</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=4956#p4956</link>
			<description><![CDATA[<div class="quotebox"><cite>Санёк пишет:</cite><blockquote><p>В самом начале указывается, насколько старые должны быть файлы, чтобы скрипт удалил их! (<strong>Now-3</strong> возвращает дату на 3 суток раньше текущей)<br />Скрипт написан путём видоизменения <a href="http://forum.script-coding.com/viewtopic.php?pid=505#p505">скрипта</a> от <strong>The gray Cardinal</strong><br /></p><div class="codebox"><pre><code>InitialFolder = &quot;C:\1&quot; &#039; каталог, откуда удаляем
ControlDate = Now-3 &#039; контрольная дата (удаляет файлы с датой создания раньше этой)

&#039;====================================================================
On Error Resume Next
Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objShellApp = CreateObject(&quot;Shell.Application&quot;)
LogPath = objFSO.GetParentFolderName(WScript.ScriptFullName)
Set LogStream = objFSO.OpenTextFile(LogPath &amp; &quot;\CopyLog.log&quot;, 8, True)
LogStream.WriteLine &quot;Начало удаления &quot; &amp; Now()

DelFiles InitialFolder
LogStream.WriteLine &quot;Конец удаления: &quot; &amp; Now()
LogStream.WriteLine
LogStream.Close

&#039; процедура рекурсивно перебирает файлы в каталоге удаляя их
Sub DelFiles(FolderPath)
    On Error Resume Next
    Set objFolderItems = objShellApp.NameSpace(FolderPath).Items()
    For Each objFolderItem In objFolderItems
        If objFolderItem.IsFolder And LCase(Right(objFolderItem.Name, 4)) &lt;&gt; &quot;.zip&quot; Then
            DelFiles objFolderItem.Path
        Else
            Set objFile = objFSO.GetFile(objFolderItem.Path)
            If objFile.DateCreated &lt; ControlDate Then
                LogStream.WriteLine &quot;Был удалён файл: &quot; &amp; objFolderItem.Path
                objFile.Delete true
            End If
        End If
    Next
End Sub</code></pre></div></blockquote></div><p>Прива Санчел, что то ControlDate = Now-3 &#039; контрольная дата (удаляет файлы с датой создания раньше этой) не работит, правильно&nbsp; я понимаю что Now -3 удаляет на три дня до текущей даты<br />у меня этот скрипт затирает вообще все файлы в папке не&nbsp; смотря на разные даты файлов, включая файлы на текущую дату... в чем загвоздка, помогите! может у меня нет каких нить патчей на VBS и поэтому не понимает синтаксис скрипта???</p>]]></description>
			<author><![CDATA[null@example.com (sanchell)]]></author>
			<pubDate>Thu, 20 Sep 2007 16:31:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=4956#p4956</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3979#p3979</link>
			<description><![CDATA[<p>Выложите Ваш вариант шаблона, мне тоже интересно.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 14 Aug 2007 05:58:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3979#p3979</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3951#p3951</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Попробуйте такой вариант шаблона...</p></blockquote></div><p>alexii, с Вашей помошью разобрался я с паттернами :-)</p><p>Немного еще покрутил предложенный Вами вариант, и получилось то, что нужно. Работает все замечательно.</p><p>Еще раз спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (CAIIIOK)]]></author>
			<pubDate>Sat, 11 Aug 2007 15:34:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3951#p3951</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3917#p3917</link>
			<description><![CDATA[<p>Регулярные выражения — очень мощная вещь, при правильном подходе <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />. Мой, как обычно, оказался недостаточно проверенным.</p><p>Попробуйте такой вариант шаблона (на основе Вашего примера):<br /></p><div class="codebox"><pre><code>Set objRegExp = CreateObject(&quot;VBScript.RegExp&quot;)
objRegExp.Global = False
objRegExp.Pattern = &quot;^\d{5}-\d{2}-\d{2}\..{0,4}$&quot;
Str = &quot;12345-01-01.xls&quot;
MsgBox objRegExp.Test(Str), 0 ,Str
Str = &quot;Копия 12345-01-01.xls&quot;
MsgBox objRegExp.Test(Str), 0 ,Str
Str = &quot;12345-01-01.Копия.xls&quot;
MsgBox objRegExp.Test(Str), 0 ,Str
Str = &quot;12345-01-01.Коп.xls&quot;
MsgBox objRegExp.Test(Str), 0 ,Str
Str = &quot;12345-01-01.&quot;
MsgBox objRegExp.Test(Str), 0 ,Str</code></pre></div><p>{0,4} — ну, если вдруг *.html, что-ли. Хотя, если у Вас только *.xls, то можно так и написать.</p><p>P.S. Да, кстати, &quot;12345-01-01.&quot; в примере отрабатывает, но в скрипте-то objFile.Name вернёт только &quot;12345-01-01&quot;, т.е. без точки; так что, пожалуй, даже </p><div class="codebox"><pre><code>...
objRegExp.Pattern = &quot;^\d{5}-\d{2}-\d{2}(|\..{1,4})$&quot;
...
Str = &quot;12345-01-01.&quot;
MsgBox objRegExp.Test(Str), 0 ,Str &#039;Должно быть Ложь
Str = &quot;12345-01-01&quot;
MsgBox objRegExp.Test(Str), 0 ,Str &#039;Должно быть Истина</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Thu, 09 Aug 2007 04:17:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3917#p3917</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3916#p3916</link>
			<description><![CDATA[<div class="quotebox"><cite>The gray Cardinal пишет:</cite><blockquote><p><a href="http://www.script-coding.com/WSH/RegExp.html">Регулярными выражениями</a>.</p></blockquote></div><p>Спасибо.</p><div class="quotebox"><cite>alexii пишет:</cite><blockquote><div class="codebox"><pre><code>...
objRegExp.Pattern = &quot;\d{5}-\d{2}-\d{2}\..*&quot;
...</code></pre></div></blockquote></div><p>До подобного кода я уже дошел, а вот с паттерном есть определенные сложности: и в случае, когда переменная objFile.Name равна &quot;12345-01-01.xls&quot;, и когда это же переменная равна &quot;Копия 12345-01-01.xls&quot;, результат&nbsp; одинаков - objRegExp.Test(objFile.Name) - истина. Наглядно демонстрируется вот этим:</p><div class="codebox"><pre><code>Set objRegExp = CreateObject(&quot;VBScript.RegExp&quot;)
objRegExp.Global = False
objRegExp.Pattern = &quot;\d{5}-\d{2}-\d{2}\..*&quot;
Str = &quot;12345-01-01.xls&quot;
MsgBox objRegExp.Test(Str)
Str = &quot;Копия 12345-01-01.xls&quot;
MsgBox objRegExp.Test(Str)</code></pre></div><p>Другой вариант паттерна мне в готову не пришел...</p>]]></description>
			<author><![CDATA[null@example.com (CAIIIOK)]]></author>
			<pubDate>Wed, 08 Aug 2007 18:49:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3916#p3916</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3902#p3902</link>
			<description><![CDATA[<p>Я пробовал так:<br /></p><div class="codebox"><pre><code>...
Dim objRegExp 
...
Set objRegExp = New RegExp
objRegExp.IgnoreCase = True
objRegExp.Global = False
&#039; Только десятичные символы в имени; иначе 
&#039; использовать [.{5}-.{2}-.{2}\..*] для любых символов в имени.
objRegExp.Pattern = &quot;\d{5}-\d{2}-\d{2}\..*&quot;
...
For Each objFile In objFSO.GetFolder(strWorkFolder).Files
    If objRegExp.Test(objFile.Name) Then
        If Age(objFile) &gt; 5 Then
            MoveFileToArchive objFile, objArchiveFolder
        End If
    End If
Next
...</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 07 Aug 2007 13:07:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3902#p3902</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3853#p3853</link>
			<description><![CDATA[<div class="quotebox"><cite>CAIIIOK пишет:</cite><blockquote><p>...как сделать проверку на соотвествие имени файла формату XXXXX-YY-ZZ (т.е. первые пять символов имени - цифры, шестой - &quot;-&quot;, и&nbsp; если не соответствует - не перемещать?</p></blockquote></div><p><a href="http://www.script-coding.com/WSH/RegExp.html">Регулярными выражениями</a>.</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Sun, 05 Aug 2007 19:39:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3853#p3853</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3850#p3850</link>
			<description><![CDATA[<p>alexii, спасибо большое!</p><p>Вот, немного домучал, прикрутил лог и проверку на ошибки (спасибо The gray Cardinal за скрипт на предыдущей странице):</p><div class="codebox"><pre><code>Option Explicit

Public objFSO
Dim objArchiveFolder
Dim objFile

Dim strWorkFolder
Dim strArchiveFolder
Dim LogStream
Dim LogPath 
Dim objShellApp

set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objShellApp = CreateObject(&quot;Shell.Application&quot;)

strWorkFolder = &quot;D:\Test&quot;
strArchiveFolder = strWorkFolder &amp; &quot;\Архив&quot;
LogPath = strArchiveFolder

set LogStream = objFSO.OpenTextFile(LogPath &amp; &quot;\MoveLog.log&quot;, 8, True)

LogStream.WriteLine
LogStream.WriteLine &quot;--- Начало работы &quot; &amp; Now() &amp; &quot; ---&quot;

If Not objFSO.FolderExists(strArchiveFolder) Then
    objFSO.CreateFolder strArchiveFolder
    LogStream.WriteLine &quot;Создана папка &quot; &amp; strArchiveFolder
    
End If

Set objArchiveFolder = objFSO.GetFolder(strArchiveFolder)

For Each objFile In objFSO.GetFolder(strWorkFolder).Files
    If Age(objFile) &gt; 5 Then
        MoveFileToArchive objFile, objArchiveFolder
    End If
Next

LogStream.WriteLine
LogStream.WriteLine &quot;--- Окончание работы &quot; &amp; Now() &amp; &quot; ---&quot;

WScript.Quit(0)

&#039;=======================================================================
Function Age(objFile)
    Age = DateDiff(&quot;d&quot;, objFile.DateCreated, Now())
End Function
&#039;=======================================================================

&#039;=======================================================================
Sub MoveFileToArchive(objFile, objArchiveFolder)
    
    On Error Resume Next

    Dim strSubFolderToMove

    strSubFolderToMove = objArchiveFolder.Path &amp; &quot;\&quot; &amp; Left(objFile.Name, 5)
    
    If Not objFSO.FolderExists(strSubFolderToMove) Then
        objFSO.CreateFolder strSubFolderToMove
        LogStream.WriteLine
        LogStream.WriteLine &quot;Создана папка &quot; &amp; strSubFolderToMove
    
    
    End If

    objFile.Move strSubFolderToMove &amp; &quot;\&quot; &amp; objFile.Name

    If Err.Number &lt;&gt; 0 Then
        
        LogStream.WriteLine &quot;Ошибка перемещения файла &quot; &amp; strWorkFolder &amp; &quot;\&quot; &amp; objFile.Name &amp; &quot; - &quot; &amp; Err.Description
        Err.Clear

    Else

        LogStream.WriteLine &quot;Файл &quot; &amp; objFile.Name &amp; &quot; перемещен в &quot; &amp; strSubFolderToMove &amp; &quot;\&quot; &amp; objFile.Name


    End If
    
    
End Sub
&#039;=======================================================================</code></pre></div><p>Сильно не ругайте - делаю это в первый раз.</p><p>Еще вопрос: как сделать проверку на соотвествие имени файла формату XXXXX-YY-ZZ (т.е. первые пять символов имени - цифры, шестой - &quot;-&quot;, и&nbsp; если не соответствует - не перемещать? </p><p>Заранее спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (CAIIIOK)]]></author>
			<pubDate>Sun, 05 Aug 2007 13:26:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3850#p3850</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3840#p3840</link>
			<description><![CDATA[<p>Примерно так:<br /></p><div class="codebox"><pre><code>Option Explicit

Public objFSO
Dim objArchiveFolder
Dim objFile

Dim strWorkFolder
Dim strArchiveFolder

Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)

strWorkFolder = &quot;c:\Temp\001&quot;
strArchiveFolder = strWorkFolder &amp; &quot;\Архив&quot;

If Not objFSO.FolderExists(strArchiveFolder) Then
    objFSO.CreateFolder strArchiveFolder
End If

Set objArchiveFolder = objFSO.GetFolder(strArchiveFolder)

For Each objFile In objFSO.GetFolder(strWorkFolder).Files
    If Age(objFile) &gt; 5 Then
        MoveFileToArchive objFile, objArchiveFolder
    End If
Next

WScript.Quit(0)

&#039;=======================================================================
Function Age(objFile)
    Age = DateDiff(&quot;d&quot;, objFile.DateCreated, Now())
End Function
&#039;=======================================================================

&#039;=======================================================================
Sub MoveFileToArchive(objFile, objArchiveFolder)
    Dim strSubFolderToMove

    strSubFolderToMove = objArchiveFolder.Path &amp; &quot;\&quot; &amp; Left(objFile.Name, 5)
    
    If Not objFSO.FolderExists(strSubFolderToMove) Then
        objFSO.CreateFolder strSubFolderToMove
    End If

    objFile.Move strSubFolderToMove &amp; &quot;\&quot; &amp; objFile.Name
End Sub
&#039;=======================================================================</code></pre></div><p>Проверяйте сначала обязательно на копии</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Sat, 04 Aug 2007 13:31:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3840#p3840</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3839#p3839</link>
			<description><![CDATA[<p>Здравствуйте всем!</p><p>Есть такая задача: существует папка, в которой сложены файлы вида XXXXX-YY-ZZ, т.е. 12345-01-01, 12345-01-02, 12345-02-01, 12345-02-02 и т.д.<br />Необходим скрипт, который бы во вложенной папке &quot;Архив&quot; создавал подпапку XXXXX (первые пять символов имени файла) и все файлы старше 5 дней (дата создания), содержащие эти символы в начале своего имени, перемещал в соответствующую папку. Сколько ни пробовал, ничего толком не получается.</p><p>У кого какие идеи?</p>]]></description>
			<author><![CDATA[null@example.com (CAIIIOK)]]></author>
			<pubDate>Sat, 04 Aug 2007 11:23:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3839#p3839</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3729#p3729</link>
			<description><![CDATA[<div class="quotebox"><cite>lexx пишет:</cite><blockquote><p>Аналогичная задача, только надо не скопировать а переместить файлы старше определенной даты.<br />Какую функцию поставить?</p></blockquote></div><p>Вместо CopyFile подставить MoveFile. Синтаксис вызова - см. в файле <a href="http://www.script-coding.com/wsh_chm.zip">http://www.script-coding.com/wsh_chm.zip</a>.<br /></p><div class="quotebox"><cite>lexx пишет:</cite><blockquote><p>как сделать чтобы он перемещал файлы старше месяца (отсчет от текущей даты)</p></blockquote></div><p>Запусти вот это:<br /></p><div class="codebox"><pre><code>WScript.Echo Now
WScript.Echo Now - 30</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Fri, 27 Jul 2007 09:10:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3729#p3729</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3727#p3727</link>
			<description><![CDATA[<p>Еще забыл, подскажите как сделать чтобы он перемещал файлы старше месяца (отсчет от текущей даты)</p>]]></description>
			<author><![CDATA[null@example.com (lexx)]]></author>
			<pubDate>Fri, 27 Jul 2007 08:58:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3727#p3727</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3725#p3725</link>
			<description><![CDATA[<p>Здравствуйте!</p><p>Аналогичная задача, только надо не скопировать а переместить файлы старше определенной даты.<br />Какую функцию поставить?<br />А то в скриптах не силен <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p><p>Спасибо большое</p>]]></description>
			<author><![CDATA[null@example.com (lexx)]]></author>
			<pubDate>Fri, 27 Jul 2007 08:52:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3725#p3725</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Нужен скрипт для копирования файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=3285#p3285</link>
			<description><![CDATA[<p>Поскольку постоянно спрашивают, я дополнил <a href="http://forum.script-coding.com/viewtopic.php?id=419">пример в коллекции</a> &quot;простым&quot; копированием без условий и подпапок.</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Mon, 25 Jun 2007 16:10:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=3285#p3285</guid>
		</item>
	</channel>
</rss>
