通过windows计划任务和Dos批处理备份文件
目的:
1.计划每天每半小时备份1次,每天8点开始,执行12小时,20点结束。
2.定期删除历史备份文件,由于每天有多个时间段备份,删除前只保留当天最后一个备份。
说明:
由于删除的操作只有每天第一次执行时才真正起作用,可将以下命令拆分成两个计划任务分别执行,当然也可一起执行。可具体根据执行的效率定夺。
实施:
1.将以下代码保存为back.bat,修改源文件路径和备份目录
@echo off rem 备份指定目录下的文件 set "Ymd=%date:~,4%-%date:~5,2%-%date:~8,2%" set "Sfm=%time:~,2%%time:~3,2%" rem 备份后的路径为C:\backup\2017-09-07\1430.bak。 echo f | xcopy "源文件路径" "C:\backup\%Ymd%\%Sfm%.bak" >nul 2>nul rem 删除指定路径下指定天数之前(以文件名中包含的日期字符串为准比如:2009-12-25)的文件。 rem 指定待删除文件的存放路径 set SrcDir=C:\backup\ rem 指定天数 set DaysAgo=5 >>"%temp%/DstDate.vbs" echo LastDate=date()-%DaysAgo% >>"%temp%/DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2) >>"%temp%/DstDate.vbs" echo wscript.echo FmtDate for /f %%a in ('cscript /nologo "%temp%/DstDate.vbs"') do ( set "DstDate=%%a" ) set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2% setlocal enabledelayedexpansion for /f "delims=" %%a in ('dir /b/s/ad "%SrcDir%"') do ( set "FileDate=%%~na" if "!FileDate!" leq "%DstDate%" ( if exist "%%a" ( rem 删除之前将最后一个文件备份到历史文件夹中 move "%%a\2000.bak" "C:\backup\history\!FileDate!.bak" rd /s /q "%%a" ) ) ) endlocal :: exit
2.设置windows计划任务,具体可参考http://blog.csdn.net/woshixuye/article/details/18050769