<?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=9263</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9263&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Обработка ошибок при работе рекурсии».]]></description>
		<lastBuildDate>Sun, 16 Feb 2014 17:37:35 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[VBS: Обработка ошибок при работе рекурсии]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80102#p80102</link>
			<description><![CDATA[<p>Ранее в теме создал полноценно работающую рекурсию относительно определенного каталога. Но замел, что скрипт может &quot;отвалиться&quot; с ошибкой при появлении всевозможных ситуаций. Например:<br />1) Нет доступа к папке.<br />2) Есть проблемы при считывании имени файла (Спец символы которые могут встретится в наименовании вот нашел такое имя случайно ) </p><div class="codebox"><pre><code>Дыха?тельная систе?ма.txt</code></pre></div><br /><p>Может еще кто-то что-то может вспомнить.</p><p>Вопрос как можно обходить всевозможные такие проблемы?</p><p>В рекурсию включил дополнительно вывод в файл test.txt, что б обнаружить каталог или файл при котором произошла ошибка. Test1.txt - проверка данных в массиве. Вот сам код:</p><div class="codebox"><pre><code>Dim startFolder, Files(), RazmerMassivaFiles,i,SpisokIzMassiva

set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)

&#039;Производим очистку если остались файлы прошлого запуска
If FSO.FileExists(&quot;D:\Test.txt&quot;) Then
FSO.DeleteFile &quot;D:\Test.txt&quot;, 0
End If

If FSO.FileExists(&quot;D:\Test1.txt&quot;) Then
FSO.DeleteFile &quot;D:\Test1.txt&quot;, 0
End If

&#039;Set TextStream = FSO.CreateTextFile(&quot;D:\Test.txt&quot;)
set OFile = FSO.OpenTextFile(&quot;D:\Test.txt&quot;, 8, True)

RazmerMassivaFiles = 0
reDim Files(RazmerMassivaFiles)

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

Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
startFolder = &quot;C:\Users\&quot;

CheckFolderInFolder startFolder

MsgBox &quot;Размер массива = &quot; &amp;RazmerMassivaFiles

&#039;Вывод значений массива
&#039;Set TextStream = FSO.CreateTextFile(&quot;D:\Test1.txt&quot;)
set OFile = FSO.OpenTextFile(&quot;D:\Test1.txt&quot;, 8, True)


For i=0 To RazmerMassivaFiles Step 1
    SpisokIzMassiva = SpisokIzMassiva + Files(i) +vbCrLf

    OFile.Write(Files(i) &amp; vbCrLf)

Next
MsgBox &quot;Готово файлы Test.txt и Test1.txt с данными находятся в директории D:\ &quot;
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
            OFile.Write(AdresFolder &amp; vbCrLf)        
            OFile.Write(File.Path &amp; vbCrLf)
            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>]]></description>
			<author><![CDATA[null@example.com (wildwolf007)]]></author>
			<pubDate>Sun, 16 Feb 2014 17:37:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80102#p80102</guid>
		</item>
	</channel>
</rss>
