在 VBScript 中,如何为多个文件夹/文件管理“Scripting.FileSystemObjects”,如 objFSO 和 objFolder?
在“主要”代码部分,我声明了“Scripting.FileSystemObject”的一个实例(全局)
Set objFSO = CreateObject("Scripting.FileSystemObject")
然后,我执行一些操作,例如:
If objFSO.FileExists(strOutputFilename) Then
WScript.Echo "Deleting File: " & strOutputFilename
objFSO.DeleteFile strOutputFilename
End If
然后,在一个循环中,我得到一个文件夹,并将它传递给一个函数:
For gintLoop = 0 to (ubound(arraySearchPath))
wscript.echo "Processing folder:" & arraySearchPath(gintLoop)
Set objFolderX = objFSO.GetFolder(arraySearchPath(gintLoop))
Call DoWork (objFolderX, arrayParam1, arrayParam2)
Next
至此,一切都清楚了……
现在,在函数中,我执行以下操作:
a) 从 objFolder 收集文件名
Set lobjFolder = objFSO.GetFolder(objFolderX.Path)
Set lcolFiles = lobjFolder.Files
b)检查其他(不相关)路径中是否存在文件
c) 获取各种文件的大小:
lcurInputFileSize = CCur(lobjFile.Size)
d) 删除各种文件
e) 打开文件进行阅读
For Each lobjFile in lcolFiles
lstrTargetFile = lobjFolder.Path & "\" & lobjFile.Name
Set lobjInputFile = objFSO.OpenTextFile(lstrTargetFile, ForReading)
...
f) 打开文件进行写入
Set lobjOutputFile = objFSO.OpenTextFile(strOutputFilename, ForAppending, True)
g)调用传递各种对象的其他子/函数
h) 递归调用(相同的)函数来处理其他文件夹
For Each lobjSubfolderY in objFolderX.SubFolders
Call DoWork (lobjSubfolderY, arrayParam1, arrayParam2)
Next
我担心的是我需要确保 FileSystemObjects 的各种用途(如文件夹路径、打开的文件等)不会被 FileSystemObjects 的以后使用“踩踏”。
问题 1:我是否需要(或建议)为“Main”和每个(或某些)子/函数有一个单独的“Scripting.FileSystemObject”(objFSO)实例?
问题 2:同样,我如何管理各种其他对象以避免丢失数据?
凯文