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

VBS统计C盘文件夹时定义数组UBound为0,求代码修正方案

错误原因

  • VBS中Array()函数的作用是传入初始元素生成数组,arr = Array(i)的实际效果是创建了只有1个元素的数组,元素值为变量i的值(19),这是UBound(arr)始终返回0的核心原因。
  • 要创建指定长度的数组,需使用ReDim关键字定义数组的上下界,VBS默认数组下标从0开始,要存储i个元素时上界应为i-1。

修正后代码

set wshell = createobject("WScript.Shell")
dim fso,file,subfolder,folder
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.CreateTextFile("\\192.168.0.201\thang\Learning\test.txt")
Set folder = fso.GetFolder("C:\")
dim i,j
i = 0
j = 0 
For Each subfolder In folder.SubFolders
     'file.WriteLine """" & subfolder.path & """"  'VBS输出带双引号内容的写法
     i=i+1
Next
msgbox "i = " & i   '示例中C盘根目录有19个子文件夹,此处返回19
dim arr
ReDim arr(i-1)  '修正:声明长度为i的数组,下标范围从0到i-1
For Each subfolder In folder.SubFolders
     'file.WriteLine """" & subfolder.path & """"  '如果需要写入文件可放开该注释
     arr(j) = subfolder.path
     j=j+1
Next

' 测试数组元素
msgbox arr(0)
msgbox arr(1) 
msgbox "lbound = " & lbound(arr)  '默认返回0
msgbox "ubound = " & ubound(arr)  '返回18,对应数组总长度为19
file.close()

补充说明

如果需要数组下标从1开始,可以在脚本最开头添加Option Base 1,对应的数组声明改为ReDim arr(i)即可。

内容的提问来源于stack exchange,提问作者thangvc91

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:18:04