通过windows计划任务和Dos批处理备份文件
2024-09-28 18:31:17
目的:
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("" ^& month(LastDate),2) ^& right("" ^& 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
最新文章
- C#设计模式-策略者模式
- 返回绝对值--Math.Abs 方法
- db2 怎么计算两个时间相差多少个月。如2015-10-10 和2014-1-12
- C#设计模式——单件模式
- jquery错误: Cannot read property ‘msie’ of undefined
- Linux 目录操作和4中文件拷贝效率测试
- java生产者消费者问题代码分析
- ​'JAVAC' 不是内部或外部命令的解决方法
- elasticsearch常用命令
- Python——列表操作
- 启动CDH的cloudera-scm-server报错Error: JAVA_HOME is not set and Java could not be found
- PHP Web项目开发学习,经验谈
- easy_install与pip 区别
- python三目运算符
- 尚硅谷springboot学习18-日志使用
- svn其它
- (转)linux 内存管理——内核的shmall 和shmmax 参数
- maven最全教程
- KbmMW安装
- python16_day26【crm 增、改、查】