1

你能告诉我为什么我收到以下错误吗?

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
4

2 回答 2

2

这是由以下原因引起的:

temp = temp(ubound(temp))

并且可以通过以下方式修复:

temp = (temp(ubound(temp)))
于 2012-05-17T13:13:33.957 回答
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

因此,重新/误用 temp 变量是导致问题的原因之一。“fil”和“file”之间的区别接下来会咬你。

阅读 Alex K 的回答后,我意识到您可以避免该错误 10。我认为外部 () 是“按值传递我”括号,它在无害分配之前创建原始数组的副本。但我仍然相信使用正确的变量名而不是重复使用变量是更好的方法。

于 2012-05-17T13:28:23.470 回答