我在下面创建了脚本,该脚本在RootFolder中管理和维护分配的存储,每个备份都在其播出的单个文件夹中存储每日备份,并且如果RootFolder的内容超出预设限制,则将删除最早的备份文件夹。
到现在为止还挺好 。。。我的问题是较大的文件也可能会添加到RootFolder [strHomeFolder]中,因此也包含在总的累积“大小”中。结果,备份文件夹可能会被过早删除,在最坏的情况下,所有备份文件夹都可能被全部删除,不幸的是,这可能会破坏备份的目的!
因此,在使objFSO.GetFolder仅检查RootFolder内所有备份文件夹的内容时,我正在寻求建议,而忽略了该级别的任何文件。
strOldestFolder = ""
dtmOldestDate = Now
Set oShell = CreateObject("WScript.Shell")
strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%\HDBackups")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strHomeFolder)
intFolderSize = Int((objFolder.Size / 1024) / 1024)
If intFolderSize >= 50 Then ' change as appropriate value in MBytes
Set objSubFolders = objFolder.SubFolders
For Each objFolder in objSubFolders
strFolder = objFolder.Path
dtmFolderDate = objFolder.DateCreated
If dtmFolderDate < dtmOldestDate Then
dtmOldestDate = dtmFolderDate
strOldestFolder = strFolder
End If
Next
objFSO.DeleteFolder(strOldestFolder)
End If
只需遍历Root文件夹SubFolders
并总结一下intFolderSize
:
strOldestFolder = ""
dtmOldestDate = Now
Set objShell = CreateObject("WScript.Shell")
strHomeFolder = objShell.ExpandEnvironmentStrings("%USERPROFILE%\HDBackups")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strHomeFolder)
Dim objSubFolder
intFolderSize = 0
For Each objSubFolder In objFolder.SubFolders
intFolderSize = intFolderSize + objSubFolder.Size
Next
intFolderSize = Int((intFolderSize / 1024) / 1024)
If intFolderSize >= 50 Then ' change as appropriate value in MBytes
Set objSubFolders = objFolder.SubFolders
For Each objFolder In objSubFolders
strFolder = objFolder.Path
dtmFolderDate = objFolder.DateCreated
If dtmFolderDate < dtmOldestDate Then
dtmOldestDate = dtmFolderDate
strOldestFolder = strFolder
End If
Next
objFSO.DeleteFolder (strOldestFolder)
End If
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句