VB脚本+删除包含单词且比X月更早的文件

时间:2015-02-18 18:21:15

标签: vba vbscript

以下VB脚本将删除Temp目录下的文件并包含 access.log

这个词

如何更改此VB脚本以仅删除包含单词" access.log"的文件。并且是1或2或3个月的年龄

我想在VB中添加一些包含月号的参数 并根据此参数删除文件

例如,如果 Month_do_del = 12

然后,只有包含 access.log 的文件才会被删除

   If LCase(Right(Wscript.FullName, 11)) = "wscript.exe" Then
     strPath = Wscript.ScriptFullName
     strCommand = "%comspec% /k cscript  """ & strPath & """"
     Set objShell = CreateObject("Wscript.Shell")
     objShell.Run(strCommand), 1, True
     Wscript.Quit
 End If

Set objNetwork = CreateObject("WScript.Network")
strLog = "Files deleted on " & objNetwork.ComputerName & " at " & Now &    VbCrLf & "===================================================="
  Set objFSO = CreateObject("Scripting.FileSystemObject")
strFilesToDelete = ""
ShowSubFolders objFSO.GetFolder("G:\Temp")
 If InStr(strFilesToDelete, "|") > 0 Then
arrFiles = Split(strFilesToDelete, "|")
For Each strFilePath In arrFiles
    DeleteFile strFilePath
Next
  ElseIf strFilesToDelete <> "" Then
DeleteFile strFilesToDelete
  Else
WScript.Echo "No files were found."
strLog = strLog & VbCrLf & "No files were found."
 End If

 Set objLogFile = objFSO.CreateTextFile("C:\FileDeletionLog.log", True)
 objLogFile.Write strLog
 objLogFile.Close
 Set objLogFile = Nothing

  Sub ShowSubFolders(Folder)
On Error Resume Next
For Each objFile In Folder.Files
    If Err.Number <> 0 Then
        WScript.Echo "Error reading " & Folder.Path
           strLog = strLog & VbCrLf & "Error reading " &    Folder.Path
        Err.Clear
        On Error Resume Next
        Exit For
     Else
        On Error GoTo 0
             If Instr(UCase(objFile.Name), UCase  ("access.log"))     Then
            If strFilesToDelete = "" Then
                strFilesToDelete = objFile.Path
            Else
                        strFilesToDelete =    strFilesToDelete & "|" & objFile.Path
            End If
        End If
    End If
   Next
    For Each Subfolder in Folder.SubFolders
    ShowSubFolders Subfolder
  Next
  End Sub




  Sub DeleteFile(strFilePath)
On Error Resume Next
WScript.Echo "Deleting " & strFilePath
objFSO.DeleteFile strFilePath, True
If Err.Number <> 0 Then
    WScript.Echo "Could not delete " & strFilePath
    strLog = strLog & VbCrLf & "Could not delete " & strFilePath
    Err.Clear
    On Error GoTo 0
Else
    On Error GoTo 0
        strLog = strLog & VbCrLf & "Successfully deleted " & strFilePath
 End If
End Sub

2 个答案:

答案 0 :(得分:1)

我不知道VBS是否支持FileDateTimeDateDateDiff。如果没有,您可以轻松地将您的VBS代码移植到VBA。 DateDiff将在几个月内找到两个日期之间的差异。

Function CheckMonths(nMonths As Integer, fPath As String) As Boolean
    CheckMonths = False
    If DateDiff("m", FileDateTime(fPath), Date) = nMonths Then
        CheckMonths = True
    End If
End Function

答案 1 :(得分:1)

更改此行

If Instr(UCase(objFile.Name), UCase  ("access.log"))     Then

到这个

If Instr(1, UCase(objFile.Name), UCase("access.log")) And DateDiff("m", objFile.DateLastModified, Date) >= 12 Then