Vbscript 我想删除7天以前的文件。文件夹和空文件夹

Vbscript 我想删除7天以前的文件。文件夹和空文件夹,vbscript,Vbscript,我想删除7天以前的文件和空文件夹。我已经使用了下面链接中的脚本,但是一些文件和文件夹没有被删除,因为源直接指向驱动器号。但是,如果我们更改源文件夹c:\temp\lab,一切正常 Const Active = True Const sSource = "E:" Const MaxAge = 7 'days Const Recursive = True Checked = 0 Deleted = 0 Set oFSO = CreateObject("Scripting.FileSystemOb

我想删除7天以前的文件和空文件夹。我已经使用了下面链接中的脚本,但是一些文件和文件夹没有被删除,因为源直接指向驱动器号。但是,如果我们更改源文件夹c:\temp\lab,一切正常

Const Active = True
Const sSource = "E:"
Const MaxAge = 7 'days
Const Recursive = True

Checked = 0
Deleted = 0

Set oFSO = CreateObject("Scripting.FileSystemObject")
if active then verb = "Deleting """ Else verb = "Old file: """
CheckFolder oFSO.GetFolder(sSource)

WScript.echo
if Active then verb = " file(s) deleted" Else verb = " file(s) would be deleted"
WScript.Echo Checked & " file(s) checked, " & Deleted & verb

Sub CheckFolder (oFldr)
For Each oFile In oFldr.Files
Checked = Checked + 1
If DateDiff("D", oFile.DateLastModified, Now()) > MaxAge Then
Deleted = Deleted + 1
WScript.Echo verb & oFile.Path & """"
If Active Then oFile.Delete
End If
Next

if not Recursive then Exit Sub
For Each oSubfolder In oFldr.Subfolders
CheckFolder(oSubfolder)
Next
End Sub
那么,这个呢:

Const Active     = True
Const sSource    = "E:\start_folder" 'or "E:\" but not "E:"
Const MaxAge     = 7 'days
Const Recursive  = True

Dim dtOld, Checked, Deleted, verb
dtOld   = Now - MaxAge
Checked = 0
Deleted = 0

If Active Then verb = "Deleting """ Else verb = "Old file: """

Validate sSource
Cleanup sSource

WScript.Echo
If Active Then verb = " file(s) deleted" Else verb = " file(s) would be deleted"
WScript.Echo Checked & " file(s) checked, " & Deleted & verb

Sub Validate(sFolder)
    With CreateObject("Scripting.FileSystemObject")
        If Not .FolderExists(sFolder) Then
            Err.Raise 76 'Path not found
        End If
        If .GetFolder(sFolder).IsRootFolder Then
            If .GetDrive(.GetDriveName(sFolder)) = _
            CreateObject("WScript.Shell").Environment(_
            "PROCESS")("HOMEDRIVE") Then
                Err.Raise 75 'Path/File access error
            End If
        End If
    End With
End Sub

Sub Cleanup(sFolder)
    Dim obj
    With CreateObject("Scripting.FileSystemObject").GetFolder(sFolder)
        'recurse first
        If Recursive Then
            For Each obj In .SubFolders
                Cleanup obj
            Next
        End If
        'next delete oldest files
        For Each obj In .Files
            If obj.DateCreated < dtOld Then
                Deleted = Deleted + 1
                WScript.Echo verb & obj.Path & """"
                If Active Then obj.Delete(True)
            End If
        Next
        Checked = Checked + .Files.Count
        'and then delete old or empty folders
        For Each obj In .SubFolders
            If obj.DateCreated < dtOld Or 0 = obj.Size Then
                'count here in a variable if you like...
                If Active Then obj.Delete(True)
            End If
        Next
    End With
End Sub
Const Active=True
Const sSource=“E:\start\u folder”或“E:\”但不是“E:”
常数最大值=7'天
Const Recursive=True
Dim dtOld、选中、删除、动词
dtOld=Now-MaxAge
选中=0
已删除=0
如果处于活动状态,则verb=“Deleting”“”否则verb=“Old file:”“”
验证sSource
清理资源
Echo
如果处于活动状态,则verb=“文件已删除”否则verb=“文件将被删除”
选中WScript.Echo和“选中文件”&已删除和动词
子验证(sFolder)
使用CreateObject(“Scripting.FileSystemObject”)
如果不是。FolderExists(sFolder)则
错误。未找到提升76'路径
如果结束
如果.GetFolder(sFolder).IsRootFolder那么
If.GetDrive(.GetDriveName(sFolder))=_
CreateObject(“WScript.Shell”).Environment(_
“过程”)(“HOMEDRIVE”)然后
错误。引发75'路径/文件访问错误
如果结束
如果结束
以
端接头
子清理(sFolder)
模糊对象
使用CreateObject(“Scripting.FileSystemObject”).GetFolder(sFolder)
“首先递归
如果是递归的,那么
对于子文件夹中的每个对象
清理对象
下一个
如果结束
'下一步删除最旧的文件
对于.file中的每个对象
如果obj.DateCreated

p.S.需要就一个薄弱时刻发出警告。FSO使用快照
文件夹
集合,这意味着在迭代期间,FSO可能会尝试访问不再存在的文件夹。换句话说,我们为删除文件夹制定了单独的程序。

欢迎!请发布您试图解析的实际代码。我们可以添加一些东西来查看根驱动器中的文件夹和文件吗?因此,请不要硬编码路径来修复它。问题出在哪里?Set objFSO=CreateObject(“Scripting.FileSystemObject”)Set objDrive=objFSO.GetDrive(“Ssource”)我在上面已经试过了,但它给出了一个错误