【发布时间】:2011-08-30 11:34:10
【问题描述】:
我正在编写一个脚本来确定每个登录到 Windows 2003 服务器的用户的配置文件文件夹中特定子文件夹的所有实例的总大小,例如所有用户的桌面文件夹或所有用户的本地设置文件夹。
Option Explicit
Dim colSubfolders, intCount, intCombinedSize, objFolder2, objFSO1, objFSO2, objUserFolder, strOutput, objSearchFolder, objSubfolder, strSearchFolder, strSubfolderPath
intCount = 0
intCombinedSize = 0
strSearchFolder = "C:\Documents and Settings\"
Set objFSO1 = CreateObject("Scripting.FileSystemObject")
Set objSearchFolder = objFSO1.GetFolder(strSearchFolder)
Set colSubfolders = objSearchFolder.SubFolders
For Each objUserFolder in colSubfolders
strSubfolderPath = objUserFolder.Path & "\Desktop\"
Set objFSO2 = CreateObject("Scripting.FileSystemObject")
Set objSubfolder = objFSO2.GetFolder(strSubfolderPath)
intCount = intCount + 1
intCombinedSize = intCombinedSize + objSubfolder.Size
Next
MsgBox "Combined size of " & CStr(intCount) & " folders: " & CStr(intCombinedSize / 1048576) & " MB"
此代码在第 15 行引发“找不到路径”错误(代码 800A004C):
Set objSubfolder = objFSO2.GetFolder(strSubfolderPath)
但是,如果我打印出 strSubfolderPath,我发现返回的所有字符串都是有效的目录路径,所以我不明白为什么会出现此错误。
我尝试过在路径末尾使用和不使用尾随反斜杠,并尝试使用 8.3 样式路径来删除空格,但没有效果。
【问题讨论】:
-
您运行脚本的帐户是否有权访问这些文件夹并在 Windows 资源管理器中查看它们的大小?
-
好奇:为什么要创建多个
FileSystemObject而不是重复使用同一个? -
没有意识到我不需要创建另一个
FileSystemObject,因为我还是 VBS 的新手。感谢@Jean-François Corbett 指出这一点。 -
@Helen 我忘记在原始问题中包含该脚本正在以可以访问所有目录的管理员帐户身份运行,但感谢您的检查。问题现已解决。