Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - WSH + FSO - поиск объектов по каталогам

Ответить
Настройки темы
VBS/WSH/JS - WSH + FSO - поиск объектов по каталогам
dsa dsa вне форума

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Приветствую,
имеется простой сценарий и вопрос:

***

Option Explicit

Dim FSO
Dim ObjFolder, ObjSubFolder
Dim text, i

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Set objFolder = fso.getfolder("c:\Someone_Folder")

Set ObjSubFolder = ObjFolder.SubFolders

Call ListSubFolders(objSubFolder)

Public Sub ListSubFolders(obj)
For Each i In obj
text = text & i.name & vbcrlf

Next
end Sub

WScript.Echo Text

***
Соответственно, выводится список всех подкаталогов взятой папки

Каким образом можно вывести так же и вложенные в нее файлы, и файлы каталогов-внуков в тот же поток?


В ADSI (WinNT) у всех объектов есть свойство - object.class, -
таким образом можно создать нечто вроде

if obj.class = "organizationalUnit" then

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

Но на FSO в документации и MSDN ничего не нашол, информации мало

Может, у кого какие идеи есть, или сталкивались?

Можно на JS
Спасибо!

Отправлено: 14:08, 24-01-2008

 

Аватара для Ramzes_

Старожил


Сообщения: 203
Благодарности: 42

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
'--------------------------
Option Explicit
'--------------------------

Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Dim root_folder
Set root_folder = fso.GetFolder("G:\Temp")

Dim output_str
output_str = vbNullString

'--------------------------

Call list_all_childs(root_folder, output_str)

'--------------------------

Call WScript.Echo(output_str)
Call WScript.Quit(0)

'--------------------------
Public Sub list_all_childs(folder, output)
  output = output & folder.Path & vbCrLf

  Dim child_folder, child_folders
  Set child_folders = folder.SubFolders

  For Each child_folder In child_folders
    Call list_all_childs(child_folder, output)
  Next

  Dim file, files
  Set files = folder.Files

  For Each file In files
    output = output & file.Path & vbCrLf
  Next
End Sub
'--------------------------

-------
Хотите, чтобы девушка сказала вам «Да!»? Спросите, принимает ли она условия лицензионного соглашения.


Отправлено: 16:32, 24-01-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Deadooshka


Сообщения: 2517
Благодарности: 692

Профиль | Отправить PM | Цитировать


если плясать от исходного...

Код: Выделить весь код
Option Explicit

Dim FSO
Dim ObjFolder, ObjSubFolder
Dim text, i, pre, fi, fobj, folder

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Set objFolder = fso.getfolder("c:\Someone_Folder")

Call ListSubFolders(objFolder,"")

'pre - для отступа...
Public Sub ListSubFolders(obj,pre)

	Set ObjSubFolder = obj.SubFolders
	For Each i In ObjSubFolder
	
		text = text & pre & i.name & vbcrlf
		Set folder = fso.getfolder(i.path)
		
		'тут вызовем саму себя
		Call ListSubFolders(i, pre & "  ")
		
		Set fobj = folder.Files		
		
		For Each fi in fobj
			text = text & pre & "  " & fi.name & vbcrlf
		Next
		
	Next
end Sub

WScript.Echo Text

Отправлено: 17:01, 24-01-2008 | #3

dsa dsa вне форума Автор темы

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ramzes_ & Sham - Thnks!)

Отправлено: 09:07, 25-01-2008 | #4


Аватара для Dr.Dark

Старожил


Сообщения: 224
Благодарности: 15

Профиль | Отправить PM | Цитировать


dsa, Вот ещё вариант
Код: Выделить весь код
Dim dArray(), idx, idx1, SFCount  Idx=1  SFCount=1  Set FSO = CreateObject("Scripting.FileSystemObject")  ReDim Preserve dArray(idx)  dArray(idx)=InputBox ("Введите полный путь к папке")  Sub SFfunc  If SFcount=0 and idx1=idx Then exit sub  SFCount=0  idx1=idx1+1  Set SD=FSO.GetFolder(dArray(idx1))  For each SF in SD.Subfolders  idx=idx+1  Redim Preserve dArray(idx)  dArray(idx)=SF.Path  SFCount=SFCount+FSO.GetFolder(dArray(idx)).SubFolders.Count  call SFfunc  next  end sub
Врезультате в се подпапки записываются в массив dArray, а там ищи файлы или что надо делай.

-------
Спасение утопающих-дело рук самих утопающих.


Отправлено: 20:18, 25-08-2008 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - WSH + FSO - поиск объектов по каталогам

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Управление доступом к файлам и каталогам dascon Microsoft Windows NT/2000/2003 15 02-09-2008 01:50
Рейтинг обращений к каталогам ValVlaGen Программное обеспечение Windows 0 24-04-2008 08:41
Ошибка - Win XP SP1RUS подвисание при обращении к каталогам Burglarnet Microsoft Windows 2000/XP 1 14-11-2007 11:15
[решено] Проблемы с доступом к сетевым каталогам dww Microsoft Windows NT/2000/2003 13 22-09-2006 08:47
Распределение доступа к каталогам на домашнем компьютере?.. Андрей Рябухин Microsoft Windows 2000/XP 13 01-08-2002 11:41




 
Переход