它看起來像你試圖打開一個「受保護的文件夾「 某種程度上來說。
如果「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
時會發生什麼用'TempFolder.Path'取消註釋你在那裏的行? – dmb 2010-04-17 22:18:29