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

Показать сообщение отдельно

Ветеран


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

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


Давайте мы сделаем чуть по другому — вообще не будем трогать каталоги, имеющие атрибуты Hidden и System:
Скрытый текст
Код: Выделить весь код
Option Explicit

Const Hidden = 2
Const System = 4


Dim strRootFolder
Dim objFSO


Randomize Timer

strRootFolder = "c:\"

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

If objFSO.FolderExists(strRootFolder) Then
	WScript.Echo ScanSubFolders(objFSO.GetFolder(strRootFolder))
Else
	WScript.Echo "Can't find root folder [" & strRootFolder & "]."
	WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Function ScanSubFolders(objFolder)
	Dim objSubFolder
	
	Dim intCount
	
	
	With WScript.CreateObject("Scripting.Dictionary")
		intCount = 0
		
		For Each objSubFolder In objFolder.SubFolders
			If Not objSubFolder.Attributes And (Hidden Or System) Then
				intCount = intCount + 1
				.Add intCount, objSubFolder
			End If
		Next
		
		If .Count > 0 Then
			ScanSubFolders = ScanSubFolders(.Items()(Int(.Count * Rnd())))
		Else
			ScanSubFolders = objFolder.Path
		End If
		
		.RemoveAll
	End With
End Function
'=============================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:12, 05-11-2018 | #8