Похоже, вы пытаетесь открыть папку, которая защищена каким-то образом.
Если «For Each TempFolder In MoreFolders» не удался, то дальнейшая обработка после перехвата ошибки не позволит вам увидеть, какая папка завершилась ошибкой, проверив значение «TempFolder.Path». Фактически, доступ к «TempFolder.Path» в коде обработки ошибок часто приводит к необработанной ошибке, и сценарий падает.
Немного чище захватить имя папки и перехватить ошибку, прежде чем вы перейдете к циклу «Для каждого»:
Option Explicit
Dim objWSShell
Dim objFSO
Dim objDirectory
Dim FolderCount
Dim ErrFolderCount
Dim TopCopyFrom
Dim FolderArr()
Dim strDirFullName
Dim intDummy
Dim intErrorNumber
Dim strErrorDescription
'' Set objWSShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject ("Scripting.FileSystemObject")
FolderCount = 0
ErrFolderCount = 0
TopCopyFrom = "C:\"
ReDim Preserve FolderArr(FolderCount)
FolderArr(FolderCount) = TopCopyFrom
WScript.Echo "Processing: " & FolderArr(FolderCount)
Set objDirectory = objFSO.GetFolder(TopCopyFrom)
WorkWithSubFolders objDirectory
Set objDirectory = Nothing
WScript.Echo "FolderCount = " & FolderCount
WScript.Sleep 30000
If (ErrFolderCount > 0) Then
WScript.Echo "ErrFolderCount = " & ErrFolderCount
End If
Set objFSO = Nothing
'' Set objWSShell = Nothing
WScript.Quit
Sub WorkWithSubFolders(objDirectory)
Dim MoreFolders
Dim TempFolder
strDirFullName = objDirectory.Path
'' WScript.Echo "Processing: " & strDirFullName
On Error Resume Next
intDummy = objDirectory.SubFolders.Count
intErrorNumber = Err.Number
strErrorDescription = Err.Description
Err.Clear
On Error Goto 0
If (intErrorNumber <> 0) Then
WScript.Echo "Error #" & intErrorNumber & ", " & strErrorDescription & ", Processing folder: " & strDirFullName
ErrFolderCount = ErrFolderCount + 1
Exit Sub
End If
Set MoreFolders = objDirectory.SubFolders
For Each TempFolder In MoreFolders
FolderCount = FolderCount + 1
ReDim Preserve FolderArr(FolderCount)
FolderArr(FolderCount) = TempFolder.Path
WorkWithSubFolders(TempFolder)
Next
End Sub
Выход:
Processing: C:\
Error #70, Permission denied, Processing folder: C:\$Recycle.Bin\S-1-5-24-248752723-3714214951-6237883060-500
Error #70, Permission denied, Processing folder: C:\$Recycle.Bin\S-1-5-24-192348782-4665637426-2144812622-1001
Error #70, Permission denied, Processing folder: C:\$Recycle.Bin\S-1-5-24-192348782-4665637426-2144812622-1002
Error #70, Permission denied, Processing folder: C:\$Recycle.Bin\S-1-5-24-192348782-4665637426-2144812622-1003
Error #70, Permission denied, Processing folder: C:\$Recycle.Bin\S-1-5-24-192348782-4665637426-2144812622-500
Error #70, Permission denied, Processing folder: C:\Documents and Settings
Error #70, Permission denied, Processing folder: C:\MSOCache
Error #70, Permission denied, Processing folder: C:\PerfLogs
Error #70, Permission denied, Processing folder: C:\Program Files (x86)\Google\CrashReports
Error #70, Permission denied, Processing folder: C:\Program Files (x86)\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA
Error #70, Permission denied, Processing folder: C:\Program Files (x86)\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\JOBS
Error #70, Permission denied, Processing folder: C:\Program Files (x86)\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Log
...
...
...
Error #70, Permission denied, Processing folder: C:\Windows\Prefetch
Error #70, Permission denied, Processing folder: C:\Windows\security\audit
Error #70, Permission denied, Processing folder: C:\Windows\ServiceProfiles\LocalService
Error #70, Permission denied, Processing folder: C:\Windows\ServiceProfiles\NetworkService
Error #70, Permission denied, Processing folder: C:\Windows\System32\com\dmp
Error #70, Permission denied, Processing folder: C:\Windows\System32\config
Error #70, Permission denied, Processing folder: C:\Windows\System32\ias
Error #70, Permission denied, Processing folder: C:\Windows\System32\LogFiles\Fax\Incoming
Error #70, Permission denied, Processing folder: C:\Windows\System32\LogFiles\Fax\Outgoing
Error #70, Permission denied, Processing folder: C:\Windows\System32\LogFiles\Firewall
Error #70, Permission denied, Processing folder: C:\Windows\System32\LogFiles\HTTPERR
Error #70, Permission denied, Processing folder: C:\Windows\System32\LogFiles\WMI
Error #70, Permission denied, Processing folder: C:\Windows\System32\Msdtc
Error #70, Permission denied, Processing folder: C:\Windows\System32\NetworkList
Error #70, Permission denied, Processing folder: C:\Windows\System32\RsFx
Error #70, Permission denied, Processing folder: C:\Windows\System32\spool\PRINTERS
Error #70, Permission denied, Processing folder: C:\Windows\System32\Tasks
Error #70, Permission denied, Processing folder: C:\Windows\System32\wbem\MOF
Error #70, Permission denied, Processing folder: C:\Windows\System32\wdi
Error #70, Permission denied, Processing folder: C:\Windows\System32\wfp
Error #70, Permission denied, Processing folder: C:\Windows\SysWOW64\com\dmp
Error #70, Permission denied, Processing folder: C:\Windows\SysWOW64\config
Error #70, Permission denied, Processing folder: C:\Windows\SysWOW64\Msdtc
Error #70, Permission denied, Processing folder: C:\Windows\SysWOW64\NetworkList
Error #70, Permission denied, Processing folder: C:\Windows\SysWOW64\Tasks
Error #70, Permission denied, Processing folder: C:\Windows\Temp
FolderCount = 59815
ErrFolderCount = 1109