On dirait que vous essayez d'ouvrir un dossier qui est « protégé " en quelque sorte. Si le "Pour chaque TempFolder dans MoreFolders" a échoué, un traitement ultérieur après avoir intercepté l'erreur ne vous permettra pas de voir quel dossier a échoué en examinant la valeur de "TempFolder.Path". En fait, l'accès à "TempFolder.Path" dans le code de gestion des erreurs provoquera souvent une erreur non gérée et le script tombera en panne.
Il est un peu plus propre pour capturer le nom du dossier et intercepter l'erreur avant d'arriver à la boucle « Pour chaque »:
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
Sortie:
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
Qu'advient-il lorsque vous décommentez la ligne que vous avez là, avec 'TempFolder.Path'? – dmb