zoukankan      html  css  js  c++  java
  • 通过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:ackup2017-09-071430.bak。
    echo f | xcopy "源文件路径" "C:ackup\%Ymd%\%Sfm%.bak" >nul 2>nul
    
    rem 删除指定路径下指定天数之前(以文件名中包含的日期字符串为准比如:2009-12-25)的文件。
    rem 指定待删除文件的存放路径
    set SrcDir=C:ackup
    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 "%%a2000.bak" "C:ackuphistory!FileDate!.bak"
                rd /s /q "%%a"
            )
        )
    )
    
    
    endlocal
    
    :: exit

     2.设置windows计划任务,具体可参考http://blog.csdn.net/woshixuye/article/details/18050769

  • 相关阅读:
    深入浅出Java三大框架SSH与MVC的设计模式
    excel 日期/数字格式不生效需要但双击才会生效的解决办法
    如何隐藏DIV对象
    使用 Arrays 类操作 Java 中的数组
    Java常量的应用
    Windows操作系统下tomcat安装版图文教程
    命名sql数据集
    【转载】如何写一个框架:步骤(下)
    【转载】如何写一个框架:步骤(上)
    C++Builder实现二分查找法
  • 原文地址:https://www.cnblogs.com/huzhenchao/p/7491016.html
Copyright © 2011-2022 走看看