需求:因为公司长期以来备份文件后,都需要手懂删除备份的文件,每天的操作既繁琐而且浪费时间,所以现在想设计一个命令,能够在Schedule里设置,每天定时运行命令,删除N天之前的备份数据,而且生产删除日志。
下面把小弟写的命令和大家分享下:
1、首先在磁盘驱动器C下新建两个文件夹:C:\Script和C:\TestFolder,然后在C:\TestFolder下新建几个文件夹,C:\Script下有如下几个文件:1)、DeleteBackupFolder.cmd;2)、DeleteBackupFolder.vbs;3)、Log.txt
2、DeleteBackupFolder.vbs命令有如下内容:
On Error Resume Next
Dim strDate,objfld,objsflds,files
'保存数据库备份文件路径
strFolder = "C:\TestFolder"
strFolder1 = "C:\Script"
Set objfso = CreateObject("Scripting.FileSystemObject")
Set objfld = objfso.GetFolder(strfolder)
Set objsflds = objfld.SubFolders
'用于写入文本文件,并生成删除数据库备份报告
Const ForAppending = 8
'在scripts下创建一个空txt文件:Log.txt
Set objFile = objfso.OpenTextFile(strFolder1 & "\LOG.txt", ForAppending)
objFile.Write "================================================================" & VBCRLF & VBCRLF
objFile.Write " 数据库备文件报告 " & VBCRLF
objFile.Write " 日期: " & FormatDateTime(Now(),1) & "" & VBCRLF
objFile.Write " 时间: " & FormatDateTime(Now(),3) & "" & VBCRLF & VBCRLF
objFile.Write "================================================================" & VBCRLF
'枚举备份文件目录
For Each objsfld In objsflds
'获取要删除文件的文件名
a=objsfld.Name
'strDate = Split(objsflds.Name," ")
'检查备份是否为n天以前
'If DateDiff("d",strDate(0),Date) > 0 Then
If DateDiff("d",objsfld.DateCreated,now()) >= 0 Then
objfso.DeleteFolder objsfld
objFile.WriteLine "备份文件已删除: " & a
End If
Next
objFile.WriteLine "================================================================" & VBCRLF & VBCRLF
objFile.Close
Set objFile = Nothing
Set objfso = Nothing
Set objfld = Nothing
Set objsflds = Nothing
3、DeleteBackupFolder.cmd命令下有如下内容:
C:\Script\DeleteBackupFolder.vbs
4、先在C:\TestFolder下创建几个文件夹,如下图:
5、先进入sript目录下运行cmd脚本,随后会看到TestFolder目录下刚创建的文件 已经删除,而Log.txt文件会显示如下内容:
================================================================
数据库备文件报告
日期: 2012年6月25日
时间: 22:16:04
================================================================
备份文件已删除: 新建文件夹
备份文件已删除: 新建文件夹 (2)
备份文件已删除: 新建文件夹 (3)
6、因为是做实验,所以我把vbs里的时间设置为大于或等于0(If DateDiff("d",objsfld.DateCreated,now()) >= 0),在实际生产环境中,可以设定自己要删除的时间,如删除一个星期之前的,把0改为7就OK。