VBSript-создание дерева папок и файлов для заданного пути

Программирование на Active Server Pages и VBScript.
SAS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 101
Зарегистрирован: 21.06.2005 (Вт) 0:30
Откуда: Петропавловск-Камчатский

VBSript-создание дерева папок и файлов для заданного пути

Сообщение SAS » 14.07.2005 (Чт) 0:03

Может быть кто-то поможет - у меня просто ума не хватает (какой то out of stack space в мозгах наблюдается): Мне нужно на VBScripte написать код, который записывал бы в переменную структуру каталогов по заданному пути приблизительно в следующем формате:
(заданный путь в данном случае- переменная strPath="c:\profiles\sas\1\")

%<count-1>%%<path-c:\profiles\sas\1\%<type-folder>%%<count-1>%
%<count-1.1>%%<path-c:\profiles\sas\1\tools\%%<type-folder>%%<count-1.1>%
%<count-1.1.1>%%<path-c:\profiles\sas\1\folder1\start%%<folder>%%<count-1.1.1>%
%<count-1.1.1.1>%%<path-c:\profiles\sas\1\folder1\start\aspnetmania.lnk%%<type-file>%%<count-1.1.1.1>%
%<count-1.1.2>%%<path-c:\profiles\sas\1\folder1\vbstreets.lnk%%<type-file>%%<count-1.1.2>%
%<count-1.2>%%<path-c:\profiles\sas\1\settings\%%<type-folder>%%<count-1.2>%

В этом формате:
%<count-1>% - номер папки или файла - находится в начале и в конце строки- номер формируется как номер родительской папки & номер самого элемента в родительской папке;
%<path-c:\profiles\sas\1\settings\% - путь к файлу или папке
%<type-folder>% - тип - папка или файл.
Сложность возникает в перечислении всех вложенных папок и файлов - так как не могу себе представить - как можно циклично перебрать все файлы и папки, не зная количества вложенности.
Вообще для определения списка файлов и папок по заданному пути (для одного уровнявложенности) я использую следующий код:
Код: Выделить всё

set fso=createobject ("Scripting.FileSystemObject")
   'заданная папка
                strPath="c:\profiles\sas\1\")
   Set CurFolder = fso.GetFolder(strPath)
   'перечисление папок, вложенных в эту папку
   Set foldersIn = CurFolder.SubFolders 'это коллекция вложенных папок
   For Each Sub_Folder in foldersIn
                                FolderList=FolderList & " " & Sub_Folder.Path
   next
      
msgbox FolderList' в данном случае будет выведен список полных
'путей подпапок в папке "c:\profiles\sas\1\", разделенных пробелами
'для определения списка файлов используется аналогичный код,
'только вместо CurFolder.SubFolders используется CurFolder.Files.
   

Буду очень признателен за помощь. Помощь нужна именно в организации циклов для чтения всех подпапок и файлов в них, форматирование - это уже дело техники.
Заранее благодарен.
Извените за большой объем.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 15.07.2005 (Пт) 11:01

Используй рекурсию.

Например:

Код: Выделить всё

Dim Directory
dim Fldr
Dim s

set FSO=CreateObject("Scripting.FileSystemObject")
Call CreateList ("C:\Palm")
WScript.Echo s
WScript.Quit(0)

Sub CreateList(Directory)
  Dim SbFldrs
  Dim curFldr
   set fldr=FSO.GetFolder(Directory)
   Set SbFldrs=Fldr.subfolders
   For Each curFldr In SbFldrs
      s=s & curFldr.path & curFldr.name & vbcrlf
      If curFldr.subfolders.count > 0 Then
         CreateList(curfldr)
      End If
   Next
End Sub
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

SAS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 101
Зарегистрирован: 21.06.2005 (Вт) 0:30
Откуда: Петропавловск-Камчатский

Сообщение SAS » 17.07.2005 (Вс) 21:55

Ruslan Demidow писал(а):Используй рекурсию.


Спасибо. Очень признателен.


Вернуться в ASP и VBScript

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList