|
假如D:\backup\a为备份源文件夹,备份路径为D:\backup\,文件夹名为当天的日期,如D:\backup\2006-04-17\a,每周5备份一次,3周一个循环,即备份第4周时,第1周的备份删除,以减少空间。同时在D:\backup\log\里写日志文件,记录复制的文件,文件名为log-日期.txt,如log-2006-04-17.txt 。
1.建立backup.bat,内容如下(不包括说明):
IF EXIST log-%date:~0,10%.txt del /F /S /Q log-%date:~0,10%.txt
#如果日志文件存在则删除。%date:~0,10%取日期的前10位,我的系统日期格式"date/t"是“2006-04-17 星期一”,所以取得“2006-04-17”。根据情况需调整。
IF EXIST %date:~0,10% RD /S /Q %date:~0,10% #如果文件夹存在,删除
MD %date:~0,10% #建立文件夹
xcopy a %date:~0,10%\a\ /C /E /H /K /F /R /y >> log/log-%date:~0,10%.txt & time/T>> log/log-%date:~0,10%.txt
#复制a文件夹到%date:~0,10%\a\,并同时把已复制的文件输出到日志文件。xcopy连目录一起复制
IF EXIST %date:~0,10% IF EXIST %delDate% RD /S /Q %delDate% //如果已复制完成,则删除前3周(%delDate%指明,由下面vb取得)的备份。
2。建立backup.vbs,取的前3周的日期内容如下(不包括说明):
dtmYesterday = DateAdd("d",-21,Date) "取前21天,即3周前的日期
strYear = DatePart("yyyy",dtmYesterday)
If DatePart("m",dtmYesterday) < 10 Then
strMonth = 0 & DatePart("m",dtmYesterday)
Else
strMonth = DatePart("m",dtmYesterday)
End If
If DatePart("d",dtmYesterday) < 10 Then
strDay = 0 & DatePart("d",dtmYesterday)
Else
strDay = DatePart("d",dtmYesterday)
End If
delDate = strYear &"-"& strMonth &"-" &strDay
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run("CMD /C set delDate=" & delDate & " & backup.bat") "调用上面写的backup.bat,并传递前3周日期delDate, /C 执行后关闭cmd窗口,/K则不。
Set WshShell = Nothing
现在可以在cmd窗口里或直接点击backup.vbs执行,则可完成备份。再利用任务计划,则可定时执行你的备份了 |
|