返回列表 发帖

[原创] VBS脚本fso shell文件处理效率对比

本帖最后由 jyswjjgdwtdtj 于 2023-5-6 21:54 编辑

同样遍历‪C:\Program Files (x86)
并生成html文档
1、fso
begin_time = Timer
set fso= createobject("scripting.filesystemobject")
foldername="‪C:\Program Files (x86)"
set nowfolder=fso.getfolder(foldername)
filetree nowfolder
sub filetree(fdobject)
set files=fdobject.files
set folders=fdobject.subfolders
for each file in files
wscript.echo file.path
next
for each folder in folders
wscript.echo folder.path
filetree folder
next
end sub
wscript.echo Timer-begin_timeCOPY
消耗22.0625秒(更少一些)


2.shell
begin_time = Timer
set shell= createobject("shell.application")
foldername=‪"C:\Program Files (x86)"
set nowfolder=shell.namespace(foldername)
filetree nowfolder
sub filetree(fdobject)
set items=fdobject.items
for each item in items
if item.isfolder then
wscript.echo item.path
filetree item.getfolder
else
wscript.echo file.path
end if
next
end sub
wscript.echo Timer-begin_timeCOPY
消耗12.64秒(如果用“滤镜”的话估计还能快)


显然,shell快太多了
你好

有没有效率更高的遍历方法呢?要是能把所有文件列举出来的
你好

TOP

抄了个wmi的
Sub filetree(strFolder)
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set FileList = objWMIService.ExecQuery("ASSOCIATORS OF {Win32_Directory.Name='" & strFolder & "'} Where ResultClass = CIM_DataFile")
For Each objFile In FileList
WScript.Echo objFile.name
Next
Set FolderList = objWMIService.ExecQuery("Associators of {Win32_Directory.Name='" & strFolder & "'}Where AssocClass = Win32_Subdirectory resultRole = PartComponent")
For Each objFolder In FolderList
filetree objFolder.name
Next
End Sub
filetree "C:\Program Files (x86)"COPY
你好

TOP

返回列表