以vbscript获取用户configuration文件大小

我正在尝试使用VBScript获取用户本地configuration文件的大小。 我知道configuration文件的目录(通常是“C:\ Users \ blah”)。

以下代码不适用于大多数configuration文件(权限被拒绝错误800A0046):

Dim folder Dim fso Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set folder = fso.GetFolder("C:\Users\blah") MsgBox folder.Size ' Error occurs here 

有没有另外一种方法来做到这一点?

更新:
我做了一些更深入的挖掘,事实certificate,如果权限被拒绝给我想要得到的大小的目录的一些子文件夹或文件,则会发生权限被拒绝错误。 在用户configuration文件的情况下,即使pipe理员组也没有访问权限,总是有几个系统文件。

为了解决这个问题,我写了一个函数,试图以正常的方式获取文件夹的大小(上面),然后,如果发生错误,它会recursion到文件夹的子目录中,忽略权限被拒绝的文件夹大小(但不是其余的文件夹)。

 Dim fso Set fso = WScript.CreateObject("Scripting.FileSystemObject") Function getFolderSize(folderName) On Error Resume Next Dim folder Dim subfolder Dim size Dim hasSubfolders size = 0 hasSubfolders = False Set folder = fso.GetFolder(folderName) ' Try the non-recursive way first (potentially faster?) Err.Clear size = folder.Size If Err.Number <> 0 then ' Did not work; do recursive way: For Each subfolder in folder.SubFolders size = size + getFolderSize(subfolder.Path) hasSubfolders = True Next If not hasSubfolders then size = folder.Size End If End If getFolderSize = size Set folder = Nothing ' Just in case End Function 

就像你说的,你有一个权限被拒绝的错误。 这个脚本运行下的帐户实际上是否有权限遍历这些用户configuration文件夹并计算大小? 如果您无法使用资源pipe理器手动查看,那么您的脚本不会做得更好。

感谢这!

我以为我会遇到一些看似允许的糟糕的2008年的问题,但不是…

我需要一个脚本的代码来检查回收站的物理大小,然后再比较一下用户或pipe理员将会看到的内容。

到目前为止,我在所有服务器上发现了2gig和8gig之间的丢失文件。

代码的咕噜声简直是:

 Const RECYCLE_BIN = &Ha& Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.Namespace(RECYCLE_BIN) Set objFolderItem = objFolder.Self Set RecycledObjects = objFolder.Items For Each objItem in RecycledObjects TotalVisibleSize = TotalVisibleSize + objItem.Size Next WriteLog "Obtaining size for C:\" & BinFolder, LOG_VERBOSE WriteLog "Trying to get size", LOG_VERBOSE TotalPhysicalSize = getFolderSize("c:\" & BinFolder) if objFSO.FolderExists("d:\" & BinFolder) then WriteLog "Obtaining size for D:\" & BinFolder, LOG_VERBOSE TotalPhysicalSize = TotalPhysicalSize + getFolderSize("d:\" & BinFolder) end if 

其余的由你决定!

再次感谢Michael。

我创build了一个脚本来从Active Directory中的所有Windows XP和Windows 7计算机上获取本地用户configuration文件及其大小。 脚本可以在这里find:

Active Directory:VBscript枚举Active Directory中所有计算机和用户的本地configuration文件大小

@Ryan Bolger

你显然错过了这个脚本的重点。 vbscript对特殊文件夹有限制,不pipe你是否可以访问该文件夹,或不通过资源pipe理器没有区别。 例如,您可能有权访问“我的文档”文件夹,但是在被认为是特殊文件夹的vbscript中,无论您是什么pipe理员级别,即使它是您自己的文件夹,也会授予您拒绝的权限。

如果你想使用PowerShell的话,这个也是不错的,虽然这个是专门为我的文档文件夹写的: http : //gallery.technet.microsoft.com/ScriptCenter/en-us/149ef544-a34a-4896-b6c3 -b09491757f04