【问题标题】:VBS script 'Path not found' error when setting file system folder object reference设置文件系统文件夹对象引用时 VBS 脚本“找不到路径”错误
【发布时间】: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 我忘记在原始问题中包含该脚本正在以可以访问所有目录的管理员帐户身份运行,但感谢您的检查。问题现已解决。

标签: vbscript path


【解决方案1】:

当我运行你的代码时,我得到了同样的错误。

经过进一步检查,在我的电脑上有一个名为C:\Documents and Settings\machinename 的文件夹,其中machinename 是我的电脑名称。此文件夹仅包含一个名为 ASPNet 的子文件夹。

我猜你也有类似的东西。

【讨论】:

  • 非常感谢。我没有发现没有桌面的隐藏文件夹 LocalService 和 NetworkService。我添加了If objFSO.FolderExists(strSubfolderPath) Then,效果很好。
【解决方案2】:

为尽量减少多反斜杠混淆,请始终使用FileSystemObject 方法,而不是依赖字符串连接:

strSubfolderPath = objFSO1.BuildPath(objUserFolder.Path,"Desktop")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多