通过windows计划任务和Dos批处理备份文件

Posted Gerry_hu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过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:\backuprem 指定天数
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

以上是关于通过windows计划任务和Dos批处理备份文件的主要内容,如果未能解决你的问题,请参考以下文章

在windows上 定时执行 Schtasks命令详解(计划任务DOS批处理)

转:[windows]DOS批处理添加任务计划

windows命令行(DOS批处理)添加任务计划

sql 通过脚本和计划任务使用批处理文件动态备份数据库

Co. - Microsoft - Windows - 通过任务计划,备份本地MySQL,数据上传Linux备份服务器

Windows-计划任务-自动备份数据库和文件