如何使用VBScript/HTA将文件夹内所有文件加载到数组中?
解决VBScript/HTA加载指定目录文件到数组的问题
我帮你看看这段代码的问题哈,主要有两个关键错误导致它无法正常运行:
- 空数组的UBound调用错误:你一开始定义的
arrFileList()是空数组,第一次调用UBound(arrFileList)的时候会直接报错,因为空数组没有有效索引。 - 变量名不一致:循环里你写的是
FileList(UBound(arrFileList)),但实际定义的数组变量是arrFileList,这里变量名写错了。
下面是修正后的完整代码,我还加了注释方便你理解:
Set objFSO = CreateObject("Scripting.FileSystemObject") objFileFolder = "C:\" Set objFolder = objFSO.GetFolder(objFileFolder) Set colFiles = objFolder.Files ' 先初始化数组索引为-1,这样第一次ReDim的时候能从0开始 dim arrFileList() intIndex = -1 For Each objFile in colFiles intIndex = intIndex + 1 ' 动态扩展数组,保留已有内容 ReDim Preserve arrFileList(intIndex) ' 将文件名存入数组(如果需要完整路径可以用objFile.Path) arrFileList(intIndex) = objFile.Name Next ' 测试:输出数组里的第一个文件(索引从0开始) MsgBox "第一个文件是:" & arrFileList(0)
额外补充:给数组排序
既然你提到后续要排序,这里给你加一个简单的冒泡排序实现,用来给文件名数组排序:
' 冒泡排序:按文件名升序排列 For i = 0 to UBound(arrFileList) - 1 For j = i + 1 to UBound(arrFileList) If arrFileList(i) > arrFileList(j) Then ' 交换两个元素 strTemp = arrFileList(i) arrFileList(i) = arrFileList(j) arrFileList(j) = strTemp End If Next Next ' 测试:输出排序后的第一个文件 MsgBox "排序后的第一个文件是:" & arrFileList(0)
内容的提问来源于stack exchange,提问作者whoislouis
相关产品推荐
相关产品推荐

