目前,我正在编写一个脚本,该脚本将遍历给定文件夹并搜索具有特定扩展名的所有文件。然后它将打印出名称并汇总文件大小。我相信我已经解决了大部分问题,所以这个问题不是关于如何做到这一点。
相反,我想知道在递归函数中使用 FileSystemObject 流的最佳实践是什么。我应该为所有调用(全局或传递)使用单个流,还是应该为每个递归步骤创建一个新流?
为了额外的乐趣,我计划让这个访问多台 PC,并通过 UNC 路径。是的,我希望有更好的方法来做到这一点,但我对 VBS 比较陌生。
当前代码:
'Recursive Function handles search of files in folder and subfolders.
Function UNCSearchFolder(strUNCRootPath, strUNCNextFolder)
Dim objFSOUNCSearchFolder, objFSOUNCSearchFolder2, colFolderList, objFolder, strCurrentFolder, strSubFolder
'Get list of Subfolders in folder: <Rootpath>\<Nextfolder>
strCurrentFolder = strUNCRootPath & "\" & strUNCNextFolder & "\"
Set objFSOUNCSearchFolder = CreateObject("Scripting.FileSystemObject")
Set objFSOUNCSearchFolder2 = objFSOUNCSearchFolder.GetFolder(strCurrentFolder)
Set colFolderList = objFSOUNCSearchFolder2.SubFolders
'Subfolder dive
For Each objFolder in colFolderList
strSubFolder = objFolder.name
'REMOVE THIS ECHO LATER
wscript.echo strSubFolder
UNCSearchFolder(strCurrentFolder, strSubFolder)
Next
'Search for files here
'GC on File Streams
Set objFSOUNCSearchFolder2 = Nothing
Set objFSOUNCSearchFolder = Nothing
End Function
那么,是应该将一个文件流用于所有访问,还是应该每个步骤单独使用一个文件流?这是一个有争议的问题吗?这会导致到每个系统的多个连接还是应该只使用一个?基本上,我希望脚本能够在不干扰用户或引起奇怪响应(即,活动连接用完)的情况下正常工作。该脚本只会在我们正在进行的审计中使用几次,但最终可能会重新用于未来的审计。
让我知道你的想法。谢谢你的帮助,