我已经按照其他一些帖子编写了一个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 我是否只是推动文件系统对象可以做的限制,而不会遇到其他问题?
由于
答案 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";
这是做什么的: