Тема: VBS: Обработка ошибок при работе рекурсии
Ранее в теме создал полноценно работающую рекурсию относительно определенного каталога. Но замел, что скрипт может "отвалиться" с ошибкой при появлении всевозможных ситуаций. Например:
1) Нет доступа к папке.
2) Есть проблемы при считывании имени файла (Спец символы которые могут встретится в наименовании вот нашел такое имя случайно )
Дыха?тельная систе?ма.txtМожет еще кто-то что-то может вспомнить.
Вопрос как можно обходить всевозможные такие проблемы?
В рекурсию включил дополнительно вывод в файл test.txt, что б обнаружить каталог или файл при котором произошла ошибка. Test1.txt - проверка данных в массиве. Вот сам код:
Dim startFolder, Files(), RazmerMassivaFiles,i,SpisokIzMassiva
set FSO = CreateObject("Scripting.FileSystemObject")
'Производим очистку если остались файлы прошлого запуска
If FSO.FileExists("D:\Test.txt") Then
FSO.DeleteFile "D:\Test.txt", 0
End If
If FSO.FileExists("D:\Test1.txt") Then
FSO.DeleteFile "D:\Test1.txt", 0
End If
'Set TextStream = FSO.CreateTextFile("D:\Test.txt")
set OFile = FSO.OpenTextFile("D:\Test.txt", 8, True)
RazmerMassivaFiles = 0
reDim Files(RazmerMassivaFiles)
Files(RazmerMassivaFiles) = "В данной структуре каталогов нет файлов"
Set fso = CreateObject("Scripting.FileSystemObject")
startFolder = "C:\Users\"
CheckFolderInFolder startFolder
MsgBox "Размер массива = " &RazmerMassivaFiles
'Вывод значений массива
'Set TextStream = FSO.CreateTextFile("D:\Test1.txt")
set OFile = FSO.OpenTextFile("D:\Test1.txt", 8, True)
For i=0 To RazmerMassivaFiles Step 1
SpisokIzMassiva = SpisokIzMassiva + Files(i) +vbCrLf
OFile.Write(Files(i) & vbCrLf)
Next
MsgBox "Готово файлы Test.txt и Test1.txt с данными находятся в директории D:\ "
MsgBox SpisokIzMassiva
Function CheckFolderInFolder (AdresFolder)
'MsgBox AdresFolder
Dim File
Set Folder = FSO.GetFolder(AdresFolder)
Set CollectionFolder = Folder.SubFolders
Set CollectionFile = Folder.Files
'MsgBox CollectionFile.count
If CollectionFile.count > 0 Then
For Each File In CollectionFile
OFile.Write(AdresFolder & vbCrLf)
OFile.Write(File.Path & vbCrLf)
Files(RazmerMassivaFiles) = File.Path
'MsgBox "В массив Files("&RazmerMassivaFiles &") помещено значение = " &Files(RazmerMassivaFiles)
RazmerMassivaFiles = RazmerMassivaFiles + 1
reDim preserve Files(RazmerMassivaFiles)
'Files(RazmerMassivaFiles) = "Пустое значение"
Next
End If
For Each SubFolder In CollectionFolder
CheckFolderInFolder SubFolder
Next
End Function

