<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: JPG не протоколируется]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=10734</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10734&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: JPG не протоколируется».]]></description>
		<lastBuildDate>Mon, 29 Jun 2015 14:08:05 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: JPG не протоколируется]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=94797#p94797</link>
			<description><![CDATA[<p>1-2) Не сталкивался, вроде должно писать без проблем.<br />2) WScript.Sleep 60000 - зачем? Выкинуть и забыть.<br />4) Конечно. Разные даты и по-разному представлены. Для mpg строка dd = Split(Replace(dd, Left(dd, 1), &quot;&quot;))(0) лишняя. И лучше использовать именно мой метод, т.к. нулей может и не оказаться с учётом других региональных настроек.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Mon, 29 Jun 2015 14:08:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=94797#p94797</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: JPG не протоколируется]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=94796#p94796</link>
			<description><![CDATA[<p>Очень странно получается дописал для Jpg свою обработку по дате, а для Mpg свою обработку и все получилось и стало протоколироваться</p><div class="codebox"><pre><code>                Dim dd
                Set File = FSO.GetFile(Fl)
                FileName = File.Name
                FileParentFolder = File.ParentFolder
                NextCheck = 1
                IF LCase(FSO.GetExtensionName(File)) = LCase(&quot;jpg&quot;) Then 
                    Set Folder = CreateObject(&quot;Shell.Application&quot;).NameSpace(FileParentFolder)
                    dd = Folder.GetDetailsOf(Folder.ParseName(FileName), 12)
                    NextCheck = 0
                    
                    If NextCheck = 0 Then
                        If dd = &quot;&quot; Then
                            D = &quot;Нет_даты&quot;
                        Else
                            
&#039;                            DMY = Split(dd,&quot;.&quot;)
&#039;                            YYYY = Split(DMY(2),&quot; &quot;)
&#039;                            D = YYYY(0) &amp; &quot;.&quot; &amp;DMY(1) &amp; &quot;.&quot; &amp; DMY(0)  
                            
                            
                            dd = Split(Replace(dd, Left(dd, 1), &quot;&quot;))(0)
                            D = Day(dd)   : If Len(D) = 1 Then D = &quot;0&quot; &amp; D
                            M = Month(dd) : If Len(M) = 1 Then M = &quot;0&quot; &amp; M
                            D = Year(dd) &amp; &quot;.&quot; &amp; M &amp; &quot;.&quot; &amp; D
                            
                        End If
                    Else
                        call WhoTakeFile(File.Path, &quot;Файл не определен&quot;,&quot;Перенос не осуществлен&quot;)
                        &#039;D = &quot;Формат_файла_не_определен&quot;
                        NextCheck = 1
                    End IF
                    
                End IF
                
                IF LCase(FSO.GetExtensionName(File)) = LCase(&quot;mp4&quot;) Then 
                    Set Folder = CreateObject(&quot;Shell.Application&quot;).NameSpace(FileParentFolder)
                    dd = Folder.GetDetailsOf(Folder.ParseName(FileName), 3)
                    NextCheck = 0
                    
                    If NextCheck = 0 Then
                        If dd = &quot;&quot; Then
                            D = &quot;Нет_даты&quot;
                        Else
                            
                            DMY = Split(dd,&quot;.&quot;)
                            YYYY = Split(DMY(2),&quot; &quot;)
                            D = YYYY(0) &amp; &quot;.&quot; &amp;DMY(1) &amp; &quot;.&quot; &amp; DMY(0)  
                            
                            
&#039;                            dd = Split(Replace(dd, Left(dd, 1), &quot;&quot;))(0)
&#039;                            D = Day(dd)   : If Len(D) = 1 Then D = &quot;0&quot; &amp; D
&#039;                            M = Month(dd) : If Len(M) = 1 Then M = &quot;0&quot; &amp; M
&#039;                            D = Year(dd) &amp; &quot;.&quot; &amp; M &amp; &quot;.&quot; &amp; D
                            
                        End If
                    Else
                        call WhoTakeFile(File.Path, &quot;Файл не определен&quot;,&quot;Перенос не осуществлен&quot;)
                        &#039;D = &quot;Формат_файла_не_определен&quot;
                        NextCheck = 1
                    End IF 
                    
                End IF</code></pre></div><p>Итоговая версия:<br /></p><div class="codebox"><pre><code>Dim FSO, FldN, FldN1, Fl, D, FlN, FlN1, i

Dim FileMassiv()

Dim Folder, File

Set FSO = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)


Do
    Set objFolder = CreateObject(&quot;Shell.Application&quot;).BrowseForFolder(0, &quot;Выберите каталог размещения файлов:&quot;, 0) 
    &#039;Если пользователь не выбрал папку, завершаем приложение &amp;H0001 + &amp;H4000
    If objFolder Is Nothing Then Exit Do
    &#039;Получаем путь к выбранной папке
    FldN = objFolder.Self.Path
    FoundColon = InStr(1,FldN,&quot;:&quot;,vbTextCompare)
    If FoundColon = 1 Then
        MsgBox &quot;Вы выбрали некорректную папку размещения файлов попробуйте еще раз!&quot;
    End if
Loop while(FoundColon = 1)

If objFolder Is Nothing Then
    MsgBox &quot;Не выбран каталог размещения файлов&quot;
Else

    If Not FSO.FolderExists(FldN) Then
        MsgBox &quot;Папка &quot;&quot;&quot; &amp; FldN &amp; &quot;&quot;&quot; не существует. &quot;, vbExclamation, &quot;Ошибка&quot;
        WScript.Quit
    End If
    
    Do
        Set objFolder = CreateObject(&quot;Shell.Application&quot;).BrowseForFolder(0, &quot;Выберите каталог куда будут перемещаться файлы:&quot;, 0) 
        &#039;Если пользователь не выбрал папку, завершаем приложение &amp;H0001 + &amp;H4000
        If objFolder Is Nothing Then Exit Do
        &#039;Получаем путь к выбранной папке
        FldN1 = objFolder.Self.Path
        FoundColon = InStr(1,FldN1,&quot;:&quot;,vbTextCompare)
        If FoundColon = 1 Then
            MsgBox &quot;Вы выбрали некорректную папку размещения файлов попробуйте еще раз!&quot;
        End if
    Loop while(FoundColon = 1)
    
    If objFolder Is Nothing Then
        MsgBox &quot;Не выбран каталог размещения файлов&quot;
    Else
        
        If Not FSO.FolderExists(FldN1) Then
            MsgBox &quot;Папка &quot;&quot;&quot; &amp; FldN1 &amp; &quot;&quot;&quot; не существует. &quot;, vbExclamation, &quot;Ошибка&quot;
            WScript.Quit
        End If
        
        Dim NextCheck
        
        NextCheck = 0
        
        Erase FileMassiv
        reDim preserve FileMassiv(-1)
        &#039;Запуск рекурсии по каталогу для нахождения файлов и помещения в массив FileMassiv() с полным путем нахождения
        Call CheckFolderInFolder (FldN &amp;&quot;\&quot;)
        &#039;MsgBox Ubound(FileMassiv)
        If Ubound(FileMassiv,1) = -1 Then
            
            &#039;&#039;WScript.Echo &quot;Файлов в данном каталоге нет&quot; 
            NextCheck = 1
            
        End IF
        
        If NextCheck = 0 Then
            
            For Each Fl In FileMassiv
                Dim dd
                Set File = FSO.GetFile(Fl)
                FileName = File.Name
                FileParentFolder = File.ParentFolder
                NextCheck = 1
                IF LCase(FSO.GetExtensionName(File)) = LCase(&quot;jpg&quot;) Then 
                    Set Folder = CreateObject(&quot;Shell.Application&quot;).NameSpace(FileParentFolder)
                    dd = Folder.GetDetailsOf(Folder.ParseName(FileName), 12)
                    NextCheck = 0
                    
                    If NextCheck = 0 Then
                        If dd = &quot;&quot; Then
                            D = &quot;Нет_даты&quot;
                        Else
                            
&#039;                            DMY = Split(dd,&quot;.&quot;)
&#039;                            YYYY = Split(DMY(2),&quot; &quot;)
&#039;                            D = YYYY(0) &amp; &quot;.&quot; &amp;DMY(1) &amp; &quot;.&quot; &amp; DMY(0)  
                            
                            
                            dd = Split(Replace(dd, Left(dd, 1), &quot;&quot;))(0)
                            D = Day(dd)   : If Len(D) = 1 Then D = &quot;0&quot; &amp; D
                            M = Month(dd) : If Len(M) = 1 Then M = &quot;0&quot; &amp; M
                            D = Year(dd) &amp; &quot;.&quot; &amp; M &amp; &quot;.&quot; &amp; D
                            
                        End If
                    Else
                        call WhoTakeFile(File.Path, &quot;Файл не определен&quot;,&quot;Перенос не осуществлен&quot;)
                        &#039;D = &quot;Формат_файла_не_определен&quot;
                        NextCheck = 1
                    End IF
                    
                End IF
                
                IF LCase(FSO.GetExtensionName(File)) = LCase(&quot;mp4&quot;) Then 
                    Set Folder = CreateObject(&quot;Shell.Application&quot;).NameSpace(FileParentFolder)
                    dd = Folder.GetDetailsOf(Folder.ParseName(FileName), 3)
                    NextCheck = 0
                    
                    If NextCheck = 0 Then
                        If dd = &quot;&quot; Then
                            D = &quot;Нет_даты&quot;
                        Else
                            
                            DMY = Split(dd,&quot;.&quot;)
                            YYYY = Split(DMY(2),&quot; &quot;)
                            D = YYYY(0) &amp; &quot;.&quot; &amp;DMY(1) &amp; &quot;.&quot; &amp; DMY(0)  
                            
                            
&#039;                            dd = Split(Replace(dd, Left(dd, 1), &quot;&quot;))(0)
&#039;                            D = Day(dd)   : If Len(D) = 1 Then D = &quot;0&quot; &amp; D
&#039;                            M = Month(dd) : If Len(M) = 1 Then M = &quot;0&quot; &amp; M
&#039;                            D = Year(dd) &amp; &quot;.&quot; &amp; M &amp; &quot;.&quot; &amp; D
                            
                        End If
                    Else
                        call WhoTakeFile(File.Path, &quot;Файл не определен&quot;,&quot;Перенос не осуществлен&quot;)
                        &#039;D = &quot;Формат_файла_не_определен&quot;
                        NextCheck = 1
                    End IF 
                    
                End IF
                
                
                
                
                If NextCheck = 0 Then
                    
                    FlN = FldN1 &amp;&quot;\&quot; &amp;D &amp;&quot;\&quot; &amp;FileName
                    FlN1 = FldN1 &amp;&quot;\&quot; &amp; D &amp;&quot;\&quot; &amp;FileName
                    
                    If Not FSO.FolderExists(FldN1 &amp;&quot;\&quot; &amp;D) Then 

                        Dim tt
                        tt = &quot;Будет создана папка &quot; &amp;D &amp;&quot; и помещен файл &quot; &amp;File.Name &amp;&quot; &quot; &amp;D &amp;&quot; = &quot; &amp;File.DateLastModified
                        &#039;Создание папок по запросу
                        &#039;ExitFromName = MsgBox (tt, 36, &quot;Прекратить создание папки?&quot;) 
                        
                        If ExitFromName = 6 Then 
                            Exit For
                        End If  
                        
                        FSO.CreateFolder (FldN1 &amp;&quot;\&quot; &amp;D)
                    End If
                    
                    
                    If FSO.FileExists(FlN) Then
                        rr = &quot;Файл &quot; &amp; File.Name &amp; &quot; уже существует в папке &quot; &amp; D &amp; &quot;. &quot; &amp; vbCr &amp; &quot;Перезаписать?&quot;
                        &#039;ExitFromName1 = MsgBox (rr, 36, &quot;Внимание&quot;) 
                        
                        ExitFromName1 = 7
                        
                        If ExitFromName1 = 6 Then
                            FSO.DeleteFile FlN, True
                            call WhoTakeFile(File.Path, &quot;Файл Перезатерт&quot;,FlN1)
                            File.Move FlN
                        Else
                            
                            Set File3 = FSO.GetFile(FlN)
                            
                            call WhoTakeFile(File.Path, &quot;Скопирована копия&quot;,FlN1)
                            
                            Set objShell = CreateObject(&quot;Shell.Application&quot;)
                            Set objFolder = objShell.NameSpace(FldN1 &amp;&quot;\&quot; &amp;D) &#039;место назначения
                            objFolder.CopyHere Fl,8
                            &#039;WScript.Sleep 60000 &#039;даём время на скачивание (минута)
                            File.Delete
                            
                        End If
                    Else
                    &#039;MsgBox File.Path
                        call WhoTakeFile(File.Path, &quot;Файл Перенесен&quot;,FlN1)
                        File.Move FlN
                    End If
                End IF
                
            Next
        End IF
        
    End IF
    
    MsgBox &quot;Скрипт завершен. &quot;, vbInformation, &quot;Финиш&quot;
    WScript.Quit

End If


Function CheckFolderInFolder (P1)

    &#039;P1 - передаваемый параметр пути где необходима рекурсия возвращаемый заполненный массив FileMassiv(i)
    
    RetCode = 0
    
    If Ubound(FileMassiv) = -1 Then
        i = -1
    End IF
    
    Dim File2,CollectionFolder,CollectionFile,Folder5
    
    Set Folder5 = FSO.GetFolder(P1)
    Set CollectionFolder = Folder5.SubFolders
    Set CollectionFile = Folder5.Files
    
    If CollectionFile.count &gt; 0 Then
        For Each File2 In CollectionFile
            &#039; Сообщение о файле при переборе
            i = i + 1
            reDim preserve FileMassiv(i)
            FileMassiv(i) = File2.Path
            &#039;MsgBox File2.Path &amp;&quot; = &quot; &amp;i
            &#039;WScript.Echo File2.Path &amp;&quot; Размерность =&quot; &amp;i &amp;&quot; Размер массива = &quot; &amp;Ubound(FileMassiv)
        Next
    End If
    
    For Each SubFolder In CollectionFolder
        call CheckFolderInFolder (SubFolder)
    Next

End Function


Sub WhoTakeFile(P1,P2,P3)
    
    &#039;P1 - обрабатываемый файл путь
    &#039;P2 - наименование операции
    &#039;P3 - директория для переноса
    
    Dim File1
    
    YearNow = Split(TakeFolderData,&quot;_&quot;)
    
    Dim FileTakeUser
    Dim OpenFileBuzyCheck
    
    
    Set FileTakeUser = FSO.GetFile(P1)
    
    On Error Resume Next
    
    If Not FSO.FileExists(FldN1 &amp;&quot;\&quot; &amp;&quot;Протокол&quot;  &amp;&quot;.txt&quot;) Then
        Set OpenFileBuzyCheck = FSO.OpenTextFile(FldN1 &amp;&quot;\&quot; &amp;&quot;Протокол&quot;  &amp;&quot;.txt&quot;, 8, True)
        
        OpenFileBuzyCheck.WriteLine &quot;******************************************************************************************************************************************************************************************************************************************************************************************************************************&quot;
        OpenFileBuzyCheck.WriteLine &quot;* Журнал обработки                                                                                                                                                                                                                                                                                                           *&quot;
        OpenFileBuzyCheck.WriteLine &quot;******************************************************************************************************************************************************************************************************************************************************************************************************************************&quot;
        OpenFileBuzyCheck.WriteLine &quot;* Обрабатываемый файл                                                                                       * Дата и время выполнения  * Производимая операция* Директория размещения                                                                      * дата создания       * Дата изменения      * Дата открытия       *&quot;
        OpenFileBuzyCheck.WriteLine &quot;******************************************************************************************************************************************************************************************************************************************************************************************************************************&quot;
        
        Set File1 = FSO.GetFile(FldN1 &amp;&quot;\&quot; &amp;&quot;Протокол&quot;  &amp;&quot;.txt&quot;)
    Else
        Set File1 = FSO.GetFile(FldN1 &amp;&quot;\&quot; &amp;&quot;Протокол&quot;  &amp;&quot;.txt&quot;)
        Set OpenFileBuzyCheck = FSO.OpenTextFile(File1, 8, True)
    End If
    
    If Err.Number = 0 Then
    
        Dim P(7)
        P(0) = FileTakeUser.Path
        P(1) = P2
        P(2) = P3
        P(3) = FileTakeUser.DateCreated
        P(4) = FileTakeUser.DateLastModified
        P(5) = FileTakeUser.DateLastAccessed 
        P(6) = &quot; - &quot;
        P(7) = now
        
        Dim L(7)
        L(0) = 105
        L(1) = 20
        L(2) = 90
        L(3) = 18
        L(4) = 18
        L(5) = 18
        L(6) = 70
        L(7) = 24
        
        For a = 0 To 7 Step 1
            Do
                &#039;WScript.Echo &quot;=&quot; &amp;P(a) &amp;&quot;=&quot;
                If L(a) = &quot;&quot; Then
                    Exit Do
                End If
                If Len(P(a)) &lt; L(a) Then
                    P(a) = P(a)  &amp;&quot; &quot;
                End If
                &#039;If Len(P(a)) &lt; L(a) Then
                &#039;    P(a) = &quot; &quot;  &amp;P(a) 
                &#039;End If
            Loop While (Len(P(a)) &lt; L(a))
        Next
        OpenFileBuzyCheck.WriteLine &quot;* &quot; &amp;P(0) &amp;&quot; * &quot; &amp;P(7) &amp;&quot; * &quot; &amp;P(1) &amp;&quot; * &quot; &amp;P(2) &amp;&quot; * &quot; &amp;P(3) &amp;&quot; * &quot; &amp;P(4) &amp;&quot; * &quot; &amp;P(5) &amp;&quot; *&quot;
        OpenFileBuzyCheck.Close
    Else
        OpenFileBuzyCheck.Close
    End IF
    
    Err.Clear
    On Error Goto 0
    
End Sub</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (wildwolf007)]]></author>
			<pubDate>Mon, 29 Jun 2015 13:46:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=94796#p94796</guid>
		</item>
		<item>
			<title><![CDATA[VBS: JPG не протоколируется]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=94795#p94795</link>
			<description><![CDATA[<p>Ранее в другой теме создавал скрипт, который переносит из одной папки в другую и создает дату съемки для фотографий (что б наконец-таки разобрать свой фото архив). Сейчас дописал обработку для видео файлов, рекурсивный проход, меню выбора директорий и не могу понять почему не производится протоколирование для файлов JPG, а все остальное протоколируется без проблем. Пол дня просидел не могу понять ошибку.</p><p>Так же не понятные моменты, если кто сможет что-то подсказать по данным ошибкам буду очень благодарен:</p><p>1) Почему нельзя использовать напрямую File.Name и File.ParentFolder, которые получаю из </p><div class="codebox"><pre><code>Set File = FSO.GetFile(Fl)</code></pre></div><p> и приходится пересохранять в переменную.</p><div class="codebox"><pre><code>                Set File = FSO.GetFile(Fl)
                FileName = File.Name
                FileParentFolder = File.ParentFolder
                NextCheck = 1
                IF LCase(FSO.GetExtensionName(File)) = LCase(&quot;jpg&quot;) Then 
                    Set Folder = CreateObject(&quot;Shell.Application&quot;).NameSpace(FileParentFolder)
                    dd = Folder.GetDetailsOf(Folder.ParseName(FileName), 12)
                    NextCheck = 0
                End IF
                
                IF LCase(FSO.GetExtensionName(File)) = LCase(&quot;mp4&quot;) Then 
                    Set Folder = CreateObject(&quot;Shell.Application&quot;).NameSpace(FileParentFolder)
                    dd = Folder.GetDetailsOf(Folder.ParseName(FileName), 3)
                    NextCheck = 0
                End IF</code></pre></div><p>2) Почему здесь можно использовать переменную FL(в ней находится полный путь к файлу), но не получается использовать File.Path ведь я создаю объект Set File = FSO.GetFile(Fl)?</p><br /><div class="codebox"><pre><code>                            Set objShell = CreateObject(&quot;Shell.Application&quot;)
                            Set objFolder = objShell.NameSpace(FldN1 &amp;&quot;\&quot; &amp;D) &#039;место назначения
                            objFolder.CopyHere Fl,8
                            &#039;WScript.Sleep 60000 &#039;даём время на скачивание (минута)
                            File.Delete</code></pre></div><p>И обязательно нужно использовать WScript.Sleep 60000 ???</p><p>3)&nbsp; При протоколировании, если убираю 3й передаваемый параметр, то Jpg так же начинает протоколироваться например<br />вместо </p><div class="codebox"><pre><code>call WhoTakeFile(File.Path, &quot;Скопирована копия&quot;,FlN1)</code></pre></div><p> делаю например так </p><div class="codebox"><pre><code>call WhoTakeFile(File.Path, &quot;Скопирована копия&quot;,&quot;FlN1&quot;)</code></pre></div><p>Предполагаю что-то не так&nbsp; с переменной D.</p><br /><p>4) Предложенный вариант <strong>Flasher</strong> в 6-м посте темы <strong>VBS: Перенос фото в папку с датой съемки</strong> <a href="http://forum.script-coding.com/viewtopic.php?id=10731">http://forum.script-coding.com/viewtopic.php?id=10731</a> не работает с файлами mpg говорит несоответствие типов:</p><div class="codebox"><pre><code>    dd = Folder.GetDetailsOf(Folder.ParseName(Name1), 12)
    dd = Split(Replace(dd, Left(dd, 1), &quot;&quot;))(0)
    D = Day(dd)   : If Len(D) = 1 Then D = &quot;0&quot; &amp; D
    M = Month(dd) : If Len(M) = 1 Then M = &quot;0&quot; &amp; M
    D = Year(dd) &amp; &quot;-&quot; &amp; M &amp; &quot;-&quot; &amp; D</code></pre></div><p>Пришлось использовать:<br /></p><div class="codebox"><pre><code>                        DMY = Split(dd,&quot;.&quot;)
                        YYYY = Split(DMY(2),&quot; &quot;)
                        D = DMY(0) &amp; &quot;.&quot; &amp; DMY(1) &amp; &quot;.&quot; &amp; YYYY(0)</code></pre></div><p>Предполагаю что-то не так&nbsp; с переменной D.</p><p>Полный код ниже:<br /></p><div class="codebox"><pre><code>Dim FSO, FldN, FldN1, Fl, D, FlN, FlN1, i

Dim FileMassiv()

Dim Folder, File

Set FSO = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)


Do
    Set objFolder = CreateObject(&quot;Shell.Application&quot;).BrowseForFolder(0, &quot;Выберите каталог размещения файлов:&quot;, 0) 
    &#039;Если пользователь не выбрал папку, завершаем приложение &amp;H0001 + &amp;H4000
    If objFolder Is Nothing Then Exit Do
    &#039;Получаем путь к выбранной папке
    FldN = objFolder.Self.Path
    FoundColon = InStr(1,FldN,&quot;:&quot;,vbTextCompare)
    If FoundColon = 1 Then
        MsgBox &quot;Вы выбрали некорректную папку размещения файлов попробуйте еще раз!&quot;
    End if
Loop while(FoundColon = 1)

If objFolder Is Nothing Then
    MsgBox &quot;Не выбран каталог размещения файлов&quot;
Else

    If Not FSO.FolderExists(FldN) Then
        MsgBox &quot;Папка &quot;&quot;&quot; &amp; FldN &amp; &quot;&quot;&quot; не существует. &quot;, vbExclamation, &quot;Ошибка&quot;
        WScript.Quit
    End If
    
    Do
        Set objFolder = CreateObject(&quot;Shell.Application&quot;).BrowseForFolder(0, &quot;Выберите каталог куда будут перемещаться файлы:&quot;, 0) 
        &#039;Если пользователь не выбрал папку, завершаем приложение &amp;H0001 + &amp;H4000
        If objFolder Is Nothing Then Exit Do
        &#039;Получаем путь к выбранной папке
        FldN1 = objFolder.Self.Path
        FoundColon = InStr(1,FldN1,&quot;:&quot;,vbTextCompare)
        If FoundColon = 1 Then
            MsgBox &quot;Вы выбрали некорректную папку размещения файлов попробуйте еще раз!&quot;
        End if
    Loop while(FoundColon = 1)
    
    If objFolder Is Nothing Then
        MsgBox &quot;Не выбран каталог размещения файлов&quot;
    Else
        
        If Not FSO.FolderExists(FldN1) Then
            MsgBox &quot;Папка &quot;&quot;&quot; &amp; FldN1 &amp; &quot;&quot;&quot; не существует. &quot;, vbExclamation, &quot;Ошибка&quot;
            WScript.Quit
        End If
        
        Dim NextCheck
        
        NextCheck = 0
        
        Erase FileMassiv
        reDim preserve FileMassiv(-1)
        &#039;Запуск рекурсии по каталогу для нахождения файлов и помещения в массив FileMassiv() с полным путем нахождения
        Call CheckFolderInFolder (FldN &amp;&quot;\&quot;)
        &#039;MsgBox Ubound(FileMassiv)
        If Ubound(FileMassiv,1) = -1 Then
            
            &#039;&#039;WScript.Echo &quot;Файлов в данном каталоге нет&quot; 
            NextCheck = 1
            
        End IF
        
        If NextCheck = 0 Then
            
            For Each Fl In FileMassiv
                Dim dd
                Set File = FSO.GetFile(Fl)
                FileName = File.Name
                FileParentFolder = File.ParentFolder
                NextCheck = 1
                IF LCase(FSO.GetExtensionName(File)) = LCase(&quot;jpg&quot;) Then 
                    Set Folder = CreateObject(&quot;Shell.Application&quot;).NameSpace(FileParentFolder)
                    dd = Folder.GetDetailsOf(Folder.ParseName(FileName), 12)
                    NextCheck = 0
                End IF
                
                IF LCase(FSO.GetExtensionName(File)) = LCase(&quot;mp4&quot;) Then 
                    Set Folder = CreateObject(&quot;Shell.Application&quot;).NameSpace(FileParentFolder)
                    dd = Folder.GetDetailsOf(Folder.ParseName(FileName), 3)
                    NextCheck = 0
                End IF
                
                If NextCheck = 0 Then
                    If dd = &quot;&quot; Then
                        D = &quot;Нет_даты&quot;
                    Else
                        
                        DMY = Split(dd,&quot;.&quot;)
                        YYYY = Split(DMY(2),&quot; &quot;)
                        D = DMY(0) &amp; &quot;.&quot; &amp; DMY(1) &amp; &quot;.&quot; &amp; YYYY(0)
                        
                    End If
                Else
                    call WhoTakeFile(File.Path, &quot;Файл не определен&quot;,&quot;Перенос не осуществлен&quot;)
                    &#039;D = &quot;Формат_файла_не_определен&quot;
                    NextCheck = 1
                End IF
                
                
                
                If NextCheck = 0 Then
                    
                    FlN = FldN1 &amp;&quot;\&quot; &amp;D &amp;&quot;\&quot; &amp;FileName
                    FlN1 = FldN1 &amp;&quot;\&quot; &amp;D &amp;&quot;\&quot; &amp;FileName
                    
                    If Not FSO.FolderExists(FldN1 &amp;&quot;\&quot; &amp;D) Then 

                        Dim tt
                        tt = &quot;Будет создана папка &quot; &amp;D &amp;&quot; и помещен файл &quot; &amp;File.Name &amp;&quot; &quot; &amp;D &amp;&quot; = &quot; &amp;File.DateLastModified
                        &#039;Создание папок по запросу
                        &#039;ExitFromName = MsgBox (tt, 36, &quot;Прекратить создание папки?&quot;) 
                        
                        If ExitFromName = 6 Then 
                            Exit For
                        End If  
                        
                        FSO.CreateFolder (FldN1 &amp;&quot;\&quot; &amp;D)
                    End If
                    
                    
                    If FSO.FileExists(FlN) Then
                        rr = &quot;Файл &quot; &amp; File.Name &amp; &quot; уже существует в папке &quot; &amp; D &amp; &quot;. &quot; &amp; vbCr &amp; &quot;Перезаписать?&quot;
                        &#039;ExitFromName1 = MsgBox (rr, 36, &quot;Внимание&quot;) 
                        
                        ExitFromName1 = 7
                        
                        If ExitFromName1 = 6 Then
                            FSO.DeleteFile FlN, True
                            call WhoTakeFile(File.Path, &quot;Файл Перезатерт&quot;,FlN1)
                            File.Move FlN
                        Else
                            
                            Set File3 = FSO.GetFile(FlN)
                            
                            call WhoTakeFile(File.Path, &quot;Скопирована копия&quot;,FlN1)
                            
                            Set objShell = CreateObject(&quot;Shell.Application&quot;)
                            Set objFolder = objShell.NameSpace(FldN1 &amp;&quot;\&quot; &amp;D) &#039;место назначения
                            objFolder.CopyHere Fl,8
                            &#039;WScript.Sleep 60000 &#039;даём время на скачивание (минута)
                            File.Delete
                            
                        End If
                    Else
                    &#039;MsgBox File.Path
                        call WhoTakeFile(File.Path, &quot;Файл Перенесен&quot;,FlN1)
                        File.Move FlN
                    End If
                End IF
                
            Next
        End IF
        
    End IF
    
    MsgBox &quot;Скрипт завершен. &quot;, vbInformation, &quot;Финиш&quot;
    WScript.Quit

End If


Function CheckFolderInFolder (P1)

    &#039;P1 - передаваемый параметр пути где необходима рекурсия возвращаемый заполненный массив FileMassiv(i)
    
    RetCode = 0
    
    If Ubound(FileMassiv) = -1 Then
        i = -1
    End IF
    
    Dim File2,CollectionFolder,CollectionFile,Folder5
    
    Set Folder5 = FSO.GetFolder(P1)
    Set CollectionFolder = Folder5.SubFolders
    Set CollectionFile = Folder5.Files
    
    If CollectionFile.count &gt; 0 Then
        For Each File2 In CollectionFile
            &#039; Сообщение о файле при переборе
            i = i + 1
            reDim preserve FileMassiv(i)
            FileMassiv(i) = File2.Path
            &#039;MsgBox File2.Path &amp;&quot; = &quot; &amp;i
            &#039;WScript.Echo File2.Path &amp;&quot; Размерность =&quot; &amp;i &amp;&quot; Размер массива = &quot; &amp;Ubound(FileMassiv)
        Next
    End If
    
    For Each SubFolder In CollectionFolder
        call CheckFolderInFolder (SubFolder)
    Next

End Function


Sub WhoTakeFile(P1,P2,P3)
    
    &#039;P1 - обрабатываемый файл путь
    &#039;P2 - наименование операции
    &#039;P3 - директория для переноса
    
    Dim File1
    
    YearNow = Split(TakeFolderData,&quot;_&quot;)
    
    Dim FileTakeUser
    Dim OpenFileBuzyCheck
    
    
    Set FileTakeUser = FSO.GetFile(P1)
    
    On Error Resume Next
    
    If Not FSO.FileExists(FldN1 &amp;&quot;\&quot; &amp;&quot;Протокол&quot;  &amp;&quot;.txt&quot;) Then
        Set OpenFileBuzyCheck = FSO.OpenTextFile(FldN1 &amp;&quot;\&quot; &amp;&quot;Протокол&quot;  &amp;&quot;.txt&quot;, 8, True)
        
        OpenFileBuzyCheck.WriteLine &quot;******************************************************************************************************************************************************************************************************************************************************************************************************************************&quot;
        OpenFileBuzyCheck.WriteLine &quot;* Журнал обработки                                                                                                                                                                                                                                                                                                           *&quot;
        OpenFileBuzyCheck.WriteLine &quot;******************************************************************************************************************************************************************************************************************************************************************************************************************************&quot;
        OpenFileBuzyCheck.WriteLine &quot;* Обрабатываемый файл                                                                                       * Дата и время выполнения  * Производимая операция* Директория размещения                                                                      * дата создания       * Дата изменения      * Дата открытия       *&quot;
        OpenFileBuzyCheck.WriteLine &quot;******************************************************************************************************************************************************************************************************************************************************************************************************************************&quot;
        
        Set File1 = FSO.GetFile(FldN1 &amp;&quot;\&quot; &amp;&quot;Протокол&quot;  &amp;&quot;.txt&quot;)
    Else
        Set File1 = FSO.GetFile(FldN1 &amp;&quot;\&quot; &amp;&quot;Протокол&quot;  &amp;&quot;.txt&quot;)
        Set OpenFileBuzyCheck = FSO.OpenTextFile(File1, 8, True)
    End If
    
    If Err.Number = 0 Then
    
        Dim P(7)
        P(0) = FileTakeUser.Path
        P(1) = P2
        P(2) = P3
        P(3) = FileTakeUser.DateCreated
        P(4) = FileTakeUser.DateLastModified
        P(5) = FileTakeUser.DateLastAccessed 
        P(6) = &quot; - &quot;
        P(7) = now
        
        Dim L(7)
        L(0) = 105
        L(1) = 20
        L(2) = 90
        L(3) = 18
        L(4) = 18
        L(5) = 18
        L(6) = 70
        L(7) = 24
        
        For a = 0 To 7 Step 1
            Do
                &#039;WScript.Echo &quot;=&quot; &amp;P(a) &amp;&quot;=&quot;
                If L(a) = &quot;&quot; Then
                    Exit Do
                End If
                If Len(P(a)) &lt; L(a) Then
                    P(a) = P(a)  &amp;&quot; &quot;
                End If
                &#039;If Len(P(a)) &lt; L(a) Then
                &#039;    P(a) = &quot; &quot;  &amp;P(a) 
                &#039;End If
            Loop While (Len(P(a)) &lt; L(a))
        Next
        OpenFileBuzyCheck.WriteLine &quot;* &quot; &amp;P(0) &amp;&quot; * &quot; &amp;P(7) &amp;&quot; * &quot; &amp;P(1) &amp;&quot; * &quot; &amp;P(2) &amp;&quot; * &quot; &amp;P(3) &amp;&quot; * &quot; &amp;P(4) &amp;&quot; * &quot; &amp;P(5) &amp;&quot; *&quot;
        OpenFileBuzyCheck.Close
    Else
        OpenFileBuzyCheck.Close
    End IF
    
    Err.Clear
    On Error Goto 0
    
End Sub</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (wildwolf007)]]></author>
			<pubDate>Mon, 29 Jun 2015 13:09:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=94795#p94795</guid>
		</item>
	</channel>
</rss>
