<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; WSH:Рекурсивный вывод файлов в папке.]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9191&amp;type=atom" />
	<updated>2014-02-16T18:38:19Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9191</id>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80110#p80110" />
			<content type="html"><![CDATA[<p>Убрал все лишнее оставил только суть:<br /></p><div class="codebox"><pre><code>Dim startFolder

Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
&#039;Место указания пути рекурсии
startFolder = &quot;D:\1\&quot;

CheckFolderInFolder startFolder

Function CheckFolderInFolder (AdresFolder)
    Dim File
    Set Folder = FSO.GetFolder(AdresFolder)
    Set CollectionFolder = Folder.SubFolders
    Set CollectionFile = Folder.Files

    If CollectionFile.count &gt; 0 Then
        For Each File In CollectionFile
            &#039; Сообщение о файле при переборе
            MsgBox File.Path
        Next
    End If
    
    For Each SubFolder In CollectionFolder
        CheckFolderInFolder SubFolder
    Next

End Function
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-02-16T18:38:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80110#p80110</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80100#p80100" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>wisgest пишет:</cite><blockquote><div class="quotebox"><blockquote><p>Нужно рекурсивно пройтись по всем папкам директории &quot;D:\&quot;…</p></blockquote></div><p>Сколько же ещё будет подниматься этот вопрос?</p><p><a href="http://forum.script-coding.com/viewtopic.php?pid=7851#p7851">http://forum.script-coding.com/viewtopi … 7851#p7851</a>:<br /></p><div class="quotebox"><cite>The gray Cardinal пишет:</cite><blockquote><p>Пример скрипта, использующего компонент (рекурсивно выведет подкаталоги каталога C:\Temp)…</p></blockquote></div></blockquote></div><br /><p>Вопрос будет подниматься до тех пор, пока решение не будет предложено на мой взгляд Ваше решение немного замудрено.</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-02-16T17:27:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80100#p80100</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80099#p80099" />
			<content type="html"><![CDATA[<p>Дописал полноценную рекурсию на VBS для просмотра каталогов начальной директории всех файлов&nbsp; вот код если кому будет необходимо:</p><div class="codebox"><pre><code>Dim startFolder, Files(), RazmerMassivaFiles,i,SpisokIzMassiva

RazmerMassivaFiles = 0
reDim Files(RazmerMassivaFiles)

Files(RazmerMassivaFiles) = &quot;В данной структуре каталогов нет файлов&quot;

Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
startFolder = &quot;D:\GamesMailRu\&quot;

CheckFolderInFolder startFolder

&#039;Вывод значений массива
For i=0 To RazmerMassivaFiles Step 1
    SpisokIzMassiva = SpisokIzMassiva + Files(i) +vbCrLf
    i=i+1
Next

MsgBox SpisokIzMassiva

Function CheckFolderInFolder (AdresFolder)
    &#039;MsgBox AdresFolder
    Dim File
    Set Folder = FSO.GetFolder(AdresFolder)
    Set CollectionFolder = Folder.SubFolders
    Set CollectionFile = Folder.Files
    &#039;MsgBox CollectionFile.count
    If CollectionFile.count &gt; 0 Then
        For Each File In CollectionFile
            Files(RazmerMassivaFiles) = File.Path
            &#039;MsgBox &quot;В массив Files(&quot;&amp;RazmerMassivaFiles &amp;&quot;) помещено значение = &quot; 

&amp;Files(RazmerMassivaFiles)
            RazmerMassivaFiles = RazmerMassivaFiles + 1
            reDim preserve Files(RazmerMassivaFiles)
            &#039;Files(RazmerMassivaFiles) = &quot;Пустое значение&quot;
        Next
    End If
    
    For Each SubFolder In CollectionFolder
        CheckFolderInFolder SubFolder
    Next

End Function
</code></pre></div><p>Единственное не могу понять почему&nbsp; строка &quot;MsgBox SpisokIzMassiva&quot; не выводит в сообщении весь массив ?</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-02-16T17:25:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80099#p80099</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=79645#p79645" />
			<content type="html"><![CDATA[<p>По дате создания папки в которой находится файл.</p><p>Получилось вот так вот только чет я с многомерными массивами напортачил:</p><div class="codebox"><pre><code>&#039;On Error Resume Next
Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
startFolder = &quot;D:\1\&quot; 
If fso.FolderExists (startFolder) Then Start startFolder

Function Start(folderName)
&#039;MsgBox folderName
    Dim folder, file, fileCollection, folderCollection, subFolder, all, allmassiv
    Dim a(),i,j,k
    i=0        
    k=0
    reDim a(1,1)
    
    all = &quot;&quot;
    allmassiv = &quot;&quot;
    Set folder = fso.GetFolder(folderName)
    Set folderCollection = folder.subFolders
    For Each subFolder In folderCollection
        &#039;MsgBox subFolder.Path
        all = all + subFolder.Path +vbCrLf
        a(i) = all
        a(k) = subFolder.DateCreated
        &#039;MsgBox subFolder.DateCreated
        i=i+1
        k=k+1
        reDim preserve a(i,k)
        Set fileCollection = subFolder.Files   
        For Each file In fileCollection
            &#039;MsgBox file.Path
            all = all + file.Path +vbCrLf
            a(i)=all
            i=i+1
            k=k+1
            j=i
            reDim preserve a(i,k)
        Next 
    Next
        
    MsgBox all
    k=0
    For i=0 To j Step 1
    allmassiv = a(i,k) +vbCrLf
    k=k+1
    Next
   MsgBox allmassiv
End Function

</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-01-31T20:36:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=79645#p79645</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=79631#p79631" />
			<content type="html"><![CDATA[<p><strong>wildwolf007</strong>, пример рекурсивной обработки вложенных папок (с обработкой ошибок) Вы можете увидеть, например, <a href="http://forum.script-coding.com/viewtopic.php?pid=32111#p32111">здесь</a>.</p><div class="quotebox"><blockquote><p>Теперь я предполагаю все нужно поместить в трехмерный массив</p></blockquote></div><p>Зачем именно в трёхмерный? Используйте полный путь вместо пути и имени по отдельности.</p><div class="quotebox"><blockquote><p>и потом перебрать получившийся массив методом сортировки</p></blockquote></div><p>Некорректное выражение: <em>перебирать</em> что-либо методом сортировки невозможно. По каким критериям Вы собираетесь делать сортировку?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-01-31T18:38:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=79631#p79631</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=79627#p79627" />
			<content type="html"><![CDATA[<p>Спасибо я тоже к этому склоняюсь. Поэкспериментировал с отдельной папкой и все получилось.</p><p>(Мое предположение это проблема при работе с файловой системой попал на папку в которой запрещен вход.)</p><p>Скажите, а по логике все правильно построил какие Вы бы добавили дополнения или может могут вылести подводные камни ???</p><p>Теперь я предполагаю все нужно поместить в трехмерный массив<br />i - это полный путь папки.<br />j - имя файлов.<br />k - дата создания папки в которой находится файл.</p><p>и потом перебрать получившийся массив методом сортировки</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-01-31T18:26:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=79627#p79627</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=79624#p79624" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Не могу понять почему появляется ошибка при выполнении кода … разрешение отклонено</p></blockquote></div><p>Например, при попытке обратиться к содержимому «D:\System Volume Information».</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-01-31T18:10:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=79624#p79624</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=79619#p79619" />
			<content type="html"><![CDATA[<p>Не могу понять почему появляется ошибка при выполнении кода хотя по началу выдает так как нужно ? </p><p>Хотя мое предположение это проблема при работе с файловой системой попал на папку в которой запрещен вход.</p><p>Осталось все упорядочить относительно даты создания.</p><p>Строка 16 символ 3 разрешение отклонено <br />на строке <br />		For Each file In fileCollection</p><div class="codebox"><pre><code>&#039;On Error Resume Next
Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
startFolder = &quot;D:\&quot; 
If fso.FolderExists (startFolder) Then Start startFolder

Function Start(folderName)
MsgBox folderName
    Dim folder, file, fileCollection, folderCollection, subFolder, all
    all = &quot;&quot;
    Set folder = fso.GetFolder(folderName)
    Set folderCollection = folder.subFolders
    For Each subFolder In folderCollection
        MsgBox subFolder.Path
        all = all + subFolder.Path +vbCrLf
        Set fileCollection = subFolder.Files   
        For Each file In fileCollection
            MsgBox file.Path
            all = all + file.Path +vbCrLf
        Next 
    Next
        
    MsgBox all
   
End Function</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-01-31T17:36:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=79619#p79619</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=79613#p79613" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>dab00 пишет:</cite><blockquote><div class="quotebox"><cite>wildwolf007 пишет:</cite><blockquote><p>Dab00 Ваше решение перебирает только файлы в одной директории.</p></blockquote></div><p>В одной директории и всех ее поддиректориях, жаль, что Вы не вкурили.</p></blockquote></div><p>Да действительно все удаляет попробовал сделать так - не получилось, а если так не получается тогда тут и с массивом все не особо получится (скрипт заточен под удаление нужно что-то другое придумать будет):<br /></p><div class="codebox"><pre><code>Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
startFolder = &quot;D:\1\&quot;
OlderThanDate = DateAdd(&quot;d&quot;, -2, Date)
 
DeleteOldFiles startFolder, OlderThanDate
 
Function DeleteOldFiles(folderName, BeforeDate)
   Dim folder, file, fileCollection, folderCollection, subFolder 
   Set folder = fso.GetFolder(folderName)
   Set fileCollection = folder.Files
   For Each file In fileCollection
      If file.DateLastModified &lt; BeforeDate Then
        MsgBox file.Path
         &#039;fso.DeleteFile file.Path, True
      End If
   Next 
    Set folderCollection = folder.SubFolders
    For Each subFolder In folderCollection
        MsgBox subFolder.Path
       &#039;DeleteOldFiles subFolder.Path, BeforeDate
       &#039;If subFolder.Size = 0 Then subFolder.Delete True
    Next
End Function</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-01-31T17:13:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=79613#p79613</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=79602#p79602" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>wildwolf007 пишет:</cite><blockquote><p>Dab00 Ваше решение перебирает только файлы в одной директории.</p></blockquote></div><p>В одной директории и всех ее поддиректориях, жаль, что Вы не вкурили.<br /></p><div class="quotebox"><cite>wildwolf007 пишет:</cite><blockquote><p>Ну, а всеж нельзя ли все на одном языке ?</p></blockquote></div><p>Не смотрел, что за компонент предлагает уважаемый wisgest, но по задаче напрашивается JS, та же сортировка массива, на VBS сложнее.</p>]]></content>
			<author>
				<name><![CDATA[dab00]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27085</uri>
			</author>
			<updated>2014-01-31T14:33:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=79602#p79602</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=79592#p79592" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><div class="quotebox"><blockquote><p>Спасибо, но Ваше решение я не могу использовать в своем коде.</p></blockquote></div><p>Зато Вы можете использовать код из предложенного решения, ибо ничто не мешает при условии отсутствия дополнительных файлов использовать hta c двумя языками.</p></blockquote></div><p>Ну, а всеж нельзя ли все на одном языке ? На VBS ? А то я с vbs только начинаю более или менее разбираться, а тут другой JS опять погружаться и опять на 2-3 дня.</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-01-31T12:48:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=79592#p79592</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=79591#p79591" />
			<content type="html"><![CDATA[<p>Dab00 Ваше решение перебирает только файлы в одной директории.</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-01-31T12:46:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=79591#p79591</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=79579#p79579" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Спасибо, но Ваше решение я не могу использовать в своем коде.</p></blockquote></div><p>Зато Вы можете использовать код из предложенного решения, ибо ничто не мешает при условии отсутствия дополнительных файлов использовать hta c двумя языками.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-01-31T06:09:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=79579#p79579</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=79578#p79578" />
			<content type="html"><![CDATA[<p>Основной исполняемый файл в hta</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-01-31T05:39:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=79578#p79578</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH:Рекурсивный вывод файлов в папке.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=79577#p79577" />
			<content type="html"><![CDATA[<p>Dab00 спасибо попробую разобраться.<br />Wisgest скажите зачем обращивать исполняемый файл еще дополнительными файлами ведь это в дальнейшем усложняет восприятие читабельность кода. Спасибо, но Ваше решение я не могу использовать в своем коде.</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-01-31T05:35:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=79577#p79577</id>
		</entry>
</feed>
