VBS脚本出现Subscript out of range错误,请求排查原因
VBScript下标越界错误的原因及修复方案
错误原因分析
- 数组未初始化:你声明的
Dim Arg()是动态数组,但没有用ReDim指定数组长度,直接给Arg(i)赋值会触发下标越界。VBScript中动态数组必须先定义大小才能使用。 - 循环范围错误:
objArgs.Count返回的是参数总个数,比如你传入4个参数时Count为4,但参数下标从0开始,有效范围是0到objArgs.Count - 1。你的循环写了for i=0 to objArgs.Count,会导致循环到i=objArgs.Count,此时objArgs(i)不存在,进一步触发下标越界。
修正后的代码示例
Dim Arg() Set objArgs = WScript.Arguments ' 初始化数组大小,匹配参数数量 ReDim Arg(objArgs.Count - 1) ' 循环范围改为有效下标区间 For i=0 to objArgs.Count - 1 Arg(i) = Replace(objArgs(i),"\n",vbNewLine,1,-1,1) Next
说明
修改后数组会被正确初始化到对应长度,循环也只会遍历所有有效的参数下标,即可解决下标越界问题。
内容的提问来源于stack exchange,提问作者aritz331_
相关产品推荐
相关产品推荐

