VBScript查找#个文件夹和文件(以及子文件夹!)

VBScript查找#个文件夹和文件(以及子文件夹!),vbscript,filesystemobject,Vbscript,Filesystemobject,我跟随其他一些帖子编写了一个vbscript,它将计算/列出/移动/目录中的所有文件夹或文件,我有一些工作,但它有两个限制 1) 它没有返回正确的数字(至少与windows资源管理器不匹配)。也就是说,我搜索我的C:\并在windows explore停留时返回433个文件夹+10000(以及一个子文件夹C:\ windows,返回2234) 2) 即使我以管理员身份运行脚本,在访问不同位置的文件夹时也会出现权限错误 下面是一个简单的代码,当我测试较小的文件夹时,即使有许多子文件夹,它也会工作:

我跟随其他一些帖子编写了一个vbscript,它将计算/列出/移动/目录中的所有文件夹或文件,我有一些工作,但它有两个限制

1) 它没有返回正确的数字(至少与windows资源管理器不匹配)。也就是说,我搜索我的C:\并在windows explore停留时返回433个文件夹+10000(以及一个子文件夹C:\ windows,返回2234)

2) 即使我以管理员身份运行脚本,在访问不同位置的文件夹时也会出现权限错误

下面是一个简单的代码,当我测试较小的文件夹时,即使有许多子文件夹,它也会工作:

    [Option Explicit
'on error resume next

Dim objFolder, objFSO, objSubFolder, iFolders
Set objFSO = CreateObject("Scripting.FileSystemObject")

iFolders = 0

Call CountFolders("C:\Windows")

Sub CountFolders(strPath)
    Set objFolder = objFSO.GetFolder(strPath)
        For Each objSubFolder In objFolder.SubFolders
                iFolders = iFolders + 1
                If Right(iFolders, 2) = "00" Then
                    IF MsgBox(iFolders & " folders found so far.", VBOKCancel) = 2 Then
                        Wscript.quit
                    End If
                End If
                Call CountFolders(objSubFolder.Path)
        Next
End Sub

msgbox(iFolders)]
我是不是已经超出了文件系统对象的极限,而没有遇到其他问题

谢谢

它必须是VBScript吗?Microsoft已经将VBScript抛在后面,任何新的脚本都应该使用PowerShell完成

在PowerShell中:

$everything = get-childitem -path c:\ -recurse -force;
$Foldercount = $everything|where-object{$_.psiscontainer}|measure-object |select-object -ExpandProperty count;
$Filecount = $everything|where-object{-not $_.psiscontainer}|measure-object |select-object -ExpandProperty count;

write-output "$Foldercount folders";
write-output "$Filecount files";
它的作用是:

  • 收集C驱动器上的所有内容
  • 计算文件夹中包含的项目数
  • 计算有多少项不是文件夹中的
  • 打印结果

我应该澄清一下,它返回的数字要么正确,要么更少(它遗漏了一些),而且似乎只有在有非常大的文件夹结构时才会这样做,比如我的整个C:\或windows目录。而且,它做到了这一点,没有错误。不,它不一定是,我可能会使用VBScript使其工作,但我的想法是,如果这能工作,而不是从头开始,我有一些现有的脚本,它们会适应得很好。也许是时候加快速度了,我会尝试一下power shell选项。我尝试了powershell,它工作得更好(找到了33000个文件夹,而不是433个,这实际上比windows资源管理器发现的要多),但它仍然有很多错误,管理员应该可以访问的文件夹被拒绝访问。我从管理员命令行运行了脚本文件,如果有必要的话。