2017-09-07 102 views
0

我编写了一个脚本来抓取文件中的文件夹列表,它将检查并删除超过90天的文件。vbs(25,3)Microsoft VBScript运行时错误:无效的过程调用或参数

该脚本能够删除超过90天的文件。然而,我继续得到一个错误说:

D:\cleanup90days.vbs(25, 3) Microsoft VBScript runtime error: Invalid procedure call or argument

我不知道我错过了什么。任何帮助将不胜感激。

下面是我的脚本:

Dim days 
Dim inputFolderList, ObjFolder, Files, objFileAge 

If Not WScript.Arguments.Count = 2 Then 
    Wscript.Echo "Invalid number of arguments. Arg1: Daily or Weekly. Arg2: Remove all files older then this" 
    WScript.Quit(-1) 
End If 

days = WScript.Arguments.Item(1) 

inputFileList = "D:\FileGrep2.txt" 
Set Fso = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = fso.OpenTextFile(inputFileList, 1) 

Do Until objTextFile.AtEndOfStream 
    sFolderName = objTextFile.ReadLine 
    getfoldernames(sFolderName) 
Loop 

Function getfoldernames(sFolderName) 
    Set ObjFolder = fso.GetFolder(sFolderName) 
    Set Files = ObjFolder.Files 

    For Each Check In Files 
     objFileAge = DateDiff("n", Check.DateLastModified, Now) 
     If objFileAge > 90 Then 
      WScript.Echo Now & "the following will be deleted " & Check.Path 
      Check.Delete 
     End If 
    Next 
End Function 
+0

您的脚本看起来没问题......脚本中还有其他事情吗?或者这是完整的脚本? –

+0

在调用'getfoldernames(sFolderName)之前检查'sFolderName'是否为空' – SearchAndResQ

+0

您发布的代码中的第25行是'objFileAge = DateDiff(“n”,Check.DateLastModified,Now)'。这真的是提高错误的路线吗? –

回答

1

也许,你已经有了一个空行中输入文件"D:\FileGrep2.txt"造成Set ObjFolder = fso.GetFolder(sFolderName)线引发此错误。

+0

非常感谢你@AutomatedChaos ...我没有注意到我的输入文本文件中有一个空行。我再也没有得到这个错误。 – mirei

+0

@mirei很高兴我可以帮忙。如果这是您的问题的解决方案,您可以将此标记为接受的答案并可选择提供。这给虚拟的互联网点给回答者似乎让人开心:) – AutomatedChaos

相关问题