如何使用VBScript列出驱动器的顶级文件夹?

我正在寻找将列出D:驱动器的顶级文件夹而不是子文件夹的VBScript代码。 到目前为止,我使用以下的WMI查询,但它给了我所有的文件夹,并下降到许多级别。 也似乎只是因为我还没有确定的原因而停止。

Set colFolders = objWMIService.ExecQuery("Select * from Win32_Directory Where Drive = 'D:'") 

编辑:

经过更多的search,我发现了一些给我我想要的东西。 以防万一有其他人看这里是文件夹和大小的VBScript:

 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") set objFolder = objFSO.GetFolder("D:\") for Each folder in objFolder.SubFolders On Error Resume Next size = folder.size if Err.Number <> 0 Then size = -1 end if wscript.echo folder.name,size Next 

要指定您只需要顶层文件夹,您需要将Path = '\\'条件添加到WHERE子句中:

 strComputer = "." Set oWMI = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colFolders = oWMI.ExecQuery _ ("SELECT * FROM Win32_Directory WHERE Drive = 'D:' AND Path = '\\' ",, 48) For Each oFolder In colFolders WScript.Echo oFolder.Name Next 

或者,您可以使用ASSOCIATORS OF查询来将顶级文件夹作为驱动器根目录的子文件夹:

 strComputer = "." Set oWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colFolders = oWMI.ExecQuery _ ("ASSOCIATORS OF {Win32_Directory.Name='D:\'} " _ & "WHERE AssocClass = Win32_Subdirectory " _ & "ResultRole = PartComponent",, 48) For Each oFolder In colFolders WScript.Echo oFolder.Name Next 

FileSystemObject解决scheme可能更容易。