我修改了这个脚本,因此它可以在多个目录上运行。但是,当我运行脚本时,我在第6行收到错误消息,char 3“无效的过程调用或参数”。我是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
答案 0 :(得分:0)
您正在声明一个最高索引为2的数组。这将是一个包含三个项目的数组:零,一和二。然后,您只初始化该数组中的一个项目,即项目零。第一次通过循环,没关系。第二次,它从数组中获取第二项并将path
设置为等于它。第二个数组项等于Nothing
,因为您从未将其初始化为其他任何内容,因此path
等于Nothing
。 fso.GetFolder(path)
等于path
时,Nothing
失败。
当我将数组声明更改为loc(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