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

时间:2016-04-14 20:26:01

标签: vbscript filesystemobject

我已经按照其他一些帖子编写了一个vbscript,它会计算/列出/移动/目录中的所有文件夹或文件,但我有一些工作,但它有2个限制。

1)它不会返回正确的数字(至少不会与Windows资源管理器匹配)。 I.E.,我搜索我的C:\并且当Windows浏览器停留在那里时它返回433个文件夹+10,000(和子文件夹,C:\ Windows,返回2,234)!

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)]

1 我是否只是推动文件系统对象可以做的限制,而不会遇到其他问题?

由于

1 个答案:

答案 0 :(得分:0)

是否为VBScript?微软已经放弃了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盘上的所有内容
  • 计算文件夹中的项目数
  • 计算文件夹
  • 的项目数
  • 打印结果