Давайте мы сделаем чуть по другому — вообще не будем трогать каталоги, имеющие атрибуты 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
'=============================================================================