你应该可以使用二维数组来轻松完成这个任务。
因为你事先知道文件的数量,所以不需要使用`Preserve`来动态地调整数组大小,只需声明一个动态数组,然后使用`ReDim`来设置初始维度即可。
Dim data()
...
Dim index
ReDim data(1, colFiles.Count - 1)
For Each objFile in colFiles
...
data(0, index) = objFile.Name
data(1, index) = strNote
index = index + 1
Next
Erase data
更新:
因为上述代码如何适应他们的示例不清楚,所以 OP 希望提供一个完整的示例,因此下面是示例:
...
表示省略的现有代码以强调添加内容
Option Explicit
Dim objFSO, objFolder, colFiles, objFile, objReadFile
Dim objStartFolder, Files, strExt, strNote
Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "Notes\"
Set objFolder = objFSO.GetFolder(objStartFolder)
Dim data(), index
Set colFiles = objFolder.Files
ReDim data(1, colFiles.Count - 1)
For Each objFile in colFiles
If UCase(objFSO.GetExtensionName(objFile.name)) = "TXT" Then
Files = objStartFolder & objFile.name
Set objReadFile = objFSO.OpenTextFile(Files, 1)
strExt = Left(objFile.name, Len(objFile.name)-4)
strNote = Replace(objReadFile.ReadAll, vbCRLF, "<br>")
objReadFile.Close
Set objReadFile = Nothing
document.write strExt & "<br><br>"
document.write strNote & "<br><br>"
data(0, index) = objFile.Name
data(1, index) = strNote
index = index + 1
Else
document.write ="File was empty"
End If
Next
Erase data
Set colFiles = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
此代码未经测试
我已经用一个示例进行了测试,您可以使用CScript进行调用
Option Explicit
Dim fs, folder, files, file
Dim i, r, c
Set fs = CreateObject("Scripting.FileSystemObject")
Set folder = fs.GetFolder("C:\")
Set files = folder.Files
Dim data()
ReDim data(1, files.Count -1)
For Each file In files
data(0, i) = file.Name
data(1, i) = file.Path
i = i + 1
Next
For r = LBound(data, 2) To UBound(data, 2)
For c = LBound(data, 1) To UBound(data, 1)
WScript.Echo "data(" & c & ", " & r & ") = " & data(c, r)
Next
Next
Erase data
Set files = Nothing
Set folder = Nothing
Set fs = Nothing
使用命令行运行此代码,使用cscript.exe
而不是wscript.exe
, 否则会出现很多弹窗。