VBScript中使用数组的问题

VBScript中使用数组的问题,vbscript,Vbscript,我修改了这个脚本,使它可以在多个目录上工作。然而,当我运行脚本时,我在第6行,char 3“Invalid procedure call or argument”处收到一条错误消息。我不熟悉VB脚本,但我认为我可以用变量作为参数调用函数 Dim loc(2) loc(0) = "C:\Users\Default\AppData\Local\Temp\" for each path in loc Set fso = CreateObject("Scripting.FileSystemObje

我修改了这个脚本,使它可以在多个目录上工作。然而,当我运行脚本时,我在第6行,char 3“Invalid procedure call or argument”处收到一条错误消息。我不熟悉VB脚本,但我认为我可以用变量作为参数调用函数

Dim loc(2)
loc(0) = "C:\Users\Default\AppData\Local\Temp\"

for each path in loc
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set folder = fso.GetFolder(path)

  ' delete all files in root folder
  for each f in folder.Files
     On Error Resume Next
     name = f.name
     f.Delete True
     If Err Then
       'WScript.Echo "Error deleting:" & Name & " - " & Err.Description
     Else
       'WScript.Echo "Deleted:" & Name
     End If
     On Error GoTo 0
  Next

  ' delete all subfolders and files
  For Each f In folder.SubFolders
     On Error Resume Next
     name = f.name
     f.Delete True
     If Err Then
       'WScript.Echo "Error deleting:" & Name & " - " & Err.Description
     Else
       'WScript.Echo "Deleted:" & Name
     End If
     On Error GoTo 0
  Next
Next

您正在声明一个最高索引为2的数组。这将是一个包含三项的数组:零、一和二。然后只初始化该数组中的一个项,即项0。第一次通过循环,就没事了。第二次,它从数组中获取第二个项,并将
path
设置为与之相等。第二个数组项等于
Nothing
,因为您从未将其初始化为任何其他内容,所以
path
然后等于
Nothing
<当
path
等于
Nothing
时,code>fso.GetFolder(path)失败

当我将数组声明更改为loc(0)时,它只有一个项,即项0。然后你的代码对我来说很好

Dim loc(0)
在我看来,这个声明超现实地违反直觉,但编译器喜欢它

或者,您可以初始化原始数组中的所有三项:

loc(0) = "C:\Users\Default\AppData\Local\Temp\"
loc(1) = "C:\Users\Default\AppData\Local\Temp\blah"
loc(2) = "C:\Users\Default\AppData\Local\Temp\foobar"
……或者别的什么。但是这些路径应该是真实的目录,否则
fso.GetFolder()
将失败,因为它们不存在。该错误如下所示:

path.vbs(8, 3) Microsoft VBScript runtime error: Path not found

这是完整的代码@niz这是loc的代码。它将仅对第一个循环执行
(0):“C:\Users\Default\AppData\Local\Temp\”(1):空(2):空
谢谢!!有道理,我应该检查一下目录,看看是否删除了项目。