你能告诉我这个错误意味着什么吗?

时间:2012-05-17 12:58:35

标签: vbscript

您能否告诉我为什么会收到以下错误?

VBScript运行时错误:此数组已修复或暂时锁定:'temp'

这是生成错误的代码。我不确定如何解决它。

我只是想解压缩DRY文件夹中的文件并将其移动到ACS文件夹。 非常感谢你

Set FSO = CreateObject("Scripting.FileSystemObject")
Set fldr = FSO.GetFolder("C:\Ebooks\DRY\")
For Each fil In fldr.Files
    If LCase( Right( fil.Name, 4 ) ) = ".zip" Then
        zipFilePath = fil.Path
        temp = file.Name
        temp = Left( temp, LEN(temp) - 4 ) ' remove the .zip
        temp = Split( temp, "_" ) ' split base name away from month-day-year
        temp = temp( UBOUND(temp) ) ' get just month-day-year
        temp = Split( temp, "-" ) ' get month day and year separately
        mn = CINT(temp(0)) ' get the month number
        dirName = MonthName(mn,True) & temp(2) ' True means get 3 letter abbrev for month
        Response.Write "Unpacking " & fil.Name & " to directory " & dirName & "<br/>" & vbNewLine
        objZip.UnPack zipFilePath, "D:\ACS\" & dirName & "\"
    End If
Next

2 个答案:

答案 0 :(得分:2)

这是由:

引起的
temp = temp(ubound(temp))

可以通过以下方式修复:

temp = (temp(ubound(temp)))

答案 1 :(得分:1)

虽然您可以使用任意值分配/覆盖数组变量:

>> a = Array(1)
>> b = Array(2)
>> a = b
>> b = 4711
>> WScript.Echo Join(a), b
>>
2 4711

您无法将数组元素分配给包含数组本身的变量:

>> a = a(0)
>>
Error Number:       10
Error Description:  This array is fixed or temporarily locked
>> a = Array(Array(1), Array(2))
>> a = a(1)
>>
Error Number:       10
Error Description:  This array is fixed or temporarily locked

因此,重新/错误使用临时变量是导致问题的原因之一。 “fil”和“file”之间的区别会让你下一步。

阅读Alex K的回答之后,我意识到你可以避免这个错误10.我认为外部()是'每个值传递给我'的括号,在然后无害的赋值之前创建一个副本ov原始数组。但我仍然相信使用适当的变量名而不是重用变量是一种更好的方法。