我正在寻找一些关于 vbscript 中递归的专家见解。从网上找到的各种示例中,我创建了以下代码,顺便说一句。
- http://saltwetbytes.wordpress.com/2010/05/04/vbscript-grabbing-subfolders-recursively/
http://technet.microsoft.com/en-us/library/ee198872.aspx
Function GetAllSubFolders(RootFolder, ByRef pSubfoldersList) Dim fso, SubFolder, root Set fso = CreateObject("scripting.filesystemobject") set root = fso.getfolder(RootFolder) For Each Subfolder in root.SubFolders If pSubFoldersList = "" Then pSubFoldersList = Subfolder.Path Else pSubFoldersList = pSubFoldersList & "|" & Subfolder.Path End If GetAllSubFolders Subfolder, pSubFoldersList Next GetAllSubFolders = pSubFoldersList End Function
我的问题是:在创建递归函数(使用参数存储先前结果)时,这是一个好的方法吗?
我更喜欢把它放在一个(自包含的)“函数”中,所以该过程返回子子文件夹作为结果。但是发现的大多数示例都使用“sub”,当谈到“sub”与“function”时,我总是感到困惑(我理解当你想要一个需要返回你使用函数的东西的过程时,恕我直言,这似乎是本例中的情况)但我也可以使用“子”并简单地引用输出参数(ByRef pSubfoldersList)
那么最佳实践是什么,或者一起使用完全不同的方法更好?(与[shell.exec“cmd /c dir RootFolder /s /b /a:d”]相比,这个例子的功能也很慢,我想这是递归的副作用,或者FSO真的是减缓?)