這與Microsoft System Center Configuration Manager 2007有點相關,但它確實涉及VBScript,FileSystemObject API和讀取子文件夾屬性的問題。使用VBscript枚舉子文件夾屬性
我想運行一個腳本來枚舉我們的其中一個分發點(包共享下的每個文件夾)上的文件夾和文件夾大小。我使用FileSystemObject API和VBscript,我可以抓取大約60%的子文件夾,並獲取它們的名稱和大小,但其餘的則返回「錯誤70 /權限被拒絕」。無論我執行腳本的帳戶如何,我都嘗試在每個子文件夾對象引用之間添加一個Sleep()延遲。它仍然不會讓他們全部。
如果我手動探索文件夾,我可以查看他們的屬性沒有任何問題。這是FSO還是Windows Scripting Host的已知問題?我附上了下面的腳本代碼。 TIA!
'****************************************************************
' Filename..: fso_subfolder_sizes.vbs
' Author....: skatterbrainz
' Date......: 02/10/2013
' Purpose...: enumerate package folders and tally disk space
'****************************************************************
Option Explicit
Const rootFolder = "\\SERVER123\ShareName$"
Dim time1, folderCount, totalSpace
Dim objFSO, objFolder, objSub
Dim GBsize, folderName, folderSIze
time1 = Timer
Set objFSO = CreateObject("Scripting.FileSystemObject")
folderCount = 0
totalSpace = 0
On Error Resume Next
Set objFolder = objFSO.GetFolder(rootFolder)
If err.Number = 0 Then
wscript.echo "<folders>"
For each objSub in objFolder.SubFolders
folderName = objSub.Name
folderSize = objSub.Size
GBsize = FormatNumber(Bytes2Gbytes(folderSize), 2) & " GB"
wscript.echo "<folder name=""" & folderName & """ size=""" & GBsize & """/>"
folderCount = folderCount + 1
totalSpace = totalSpace + folderSize
Next
Set objFolder = Nothing
wscript.echo "</folders>"
wscript.echo "--------------------------"
wscript.echo "sub-folders: " & folderCount
wscript.echo "total space: " & FormatNumber(Bytes2GBytes(totalSpace),2) & " GB"
Else
wscript.echo "root folder not found"
End If
Set objFSO = Nothing
wscript.echo "runtime: " & FormatNumber(Timer - time1, 2) & " Msecs"
Function Bytes2Gbytes(n)
If n > 0 Then
Bytes2Gbytes = (n/1024/1024/1024)
Else
Bytes2Gbytes = 0
End If
End Function
不知何故,我懷疑,上面是你正在運行的實際代碼,因爲'上的錯誤恢復Next'將使腳本靜默失敗沒有任何錯誤信息。 – 2013-02-10 17:53:31