You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:07:30