如果没有符合条件的文件,如何终止此VBScript?

时间:2017-07-12 11:02:03

标签: vbscript

我已经修改了我发现的现有脚本以满足我的需求,但它会永久运行。

基本上,脚本会检查指定路径下方的文件夹,并使用文件扩展名.done删除任何超过7天的文件。

一旦重命名了具有匹配条件的所有文件,我就无法终止它。有什么想法吗?

Set args = WScript.Arguments

For Each arg In args
  t = Split(arg, "=")
  If IsNumeric(t(1)) Then
    v = arg
  Else
    v = t(0) & "=" & """" & t(1) & """"
  End If
  Execute (v)
Next

FileTooOld = DateAdd("d", -7, Now())

Set fso = WScript.CreateObject ("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")

Do Until False
  ShowSubFolders fso.GetFolder("C:\Users\Redacted\Desktop\Test")
Loop

Sub ShowSubFolders(Folder)
  WScript.Echo "* " & Folder & "\" '& subfolder.name
  Set files = Folder.Files
  On Error Resume Next
  For Each file In files
    If LCase(Right(file.Name, 5)) = ".done" Then
      realfile = folder & "\" & Left(file.Name, Len(file.Name) - 5)

      If Not fso.FileExists(realfile) And file.DateLastModified < FileTooOld Then
        WScript.Echo realfile & ".done"
        file.Delete
      End If
    End If
  Next
  On Error Goto 0
  For Each Subfolder In Folder.SubFolders
    WScript.Echo "** " & subfolder & "\" '& subfolder.Name
    ShowSubFolders Subfolder
  Next
End Sub

1 个答案:

答案 0 :(得分:0)

按照我的说法,下面是一个不必要的循环。循环部分已经在子内部处理。

Do Until False        
    ShowSubFolders fso.GetFolder("C:\Users\Redacted\Desktop\Test")
loop

而不是上面的循环,只需调用子ShowSubFolders并像下面一样注释循环,你的问题应该解决。如果有帮助,请告诉我。

'Do Until False        
    ShowSubFolders fso.GetFolder("C:\Users\Redacted\Desktop\Test")
'loop