标签:调整 bat com ken 空格 文件 星期几 tin xcopy
直接上BAT文件的内容了,完整代码如下。
备份效果:保留最新7天的网站备份、最新4个周末的网站备份,每个月底的备份永久保留。
使用的WinRAR做文件压缩,请自行安装并注意命令中WinRAR的路劲、备份文件夹、存放路劲、3个异地存放路劲,根据应用需要调整。
将该BAT文件配置到Windows“任务计划程序”中,频率为每天固定时间运行(比如23点),即可实现自动备份。
下面是关于备份命令的几点简单说明(详细参数或用法请自行查询详细资料了解):
@echo off ::年月日字符串 set str_date=%date:~0,4%%date:~5,2%%date:~8,2% ::星期几 set str_week_val=%date:~-1% ::本地要备份的文件夹路径 set str_webpath_local=D:\wwwroot ::本地备份文件存放路径 set str_path_local=D:\web_bak ::网站压缩包名称前缀 set str_rar_name=MH_WEB ::异地 备份路径 set str_path_day=z:\最新7天网站备份 ::异地 备份路径 set str_path_weekend=z:\最新4个周末的网站备份 ::异地 备份路径 set str_path_month=z:\每个月底的网站备份 ::取两位月份数字 set /a m=%date:~5,2%*1 ::第一位为0则只取个位数 if %m:~0,1%==0 set /a m=%m:~1,1%*1 ::取四位年份数字(这个命令用不到5位数那年吧) set /a x=%date:~0,4% ::闰年判断条件1 %%代表取余 set /a y=%x%*1%%4 set /a y2=%x%*1%%100 ::闰年判断条件2 %%代表取余 set /a y3=%x%*1%%400 ::默认2月份只有28天 set ld=28 ::满足闰年条件1 if %y%==0 ( if %y2% NEQ 0 set ld=29 ) ::满足闰年条件2 if %y3%==0 set ld=29 for %%i in (1 3 5 7 8 10 12)do (if %m%==%%i set /a ld=31) for %%i in (4 6 9 11)do (if %m%==%%i set /a ld=30) ::echo 日期:%ld% ::pause ::当月月底的年月日字符串 set str_monthend_val=%date:~0,4%%date:~5,2%%ld%% c: cd C:\Program Files\WinRAR echo %time%开始压缩 >>%str_path_local%\%str_date%_log.bak rar a -u -x*.log* %str_path_local%\%str_rar_name%%str_date%.rar %str_webpath_local% echo %time%结束压缩 >>%str_path_local%\%str_date%_log.bak echo. >>%str_path_local%\%str_date%_log.bak echo %time%开始复制 >>%str_path_local%\%str_date%_log.bak if "%str_date%"=="%str_monthend_val%" ( xcopy %str_path_local%\%str_rar_name%%str_date%.rar %str_path_month% /d/y ) else ( if "%str_week_val%"=="日" ( xcopy %str_path_local%\%str_rar_name%%str_date%.rar %str_path_weekend% /d/y ::删除4周前的rar文件 FORFILES /P %str_path_weekend% /M *.rar /D -22 /C "cmd /c echo %time% deleting..@file.. &del @file">>%str_path_local%\%str_date%_del.bak ) else ( xcopy %str_path_local%\%str_rar_name%%str_date%.rar %str_path_day% /d/y ::删除7天前的rar文件 FORFILES /P %str_path_day% /M *.rar /D -7 /C "cmd /c echo %time% deleting..@file.. &del @file">>%str_path_local%\%str_date%_del.bak ) ) echo %time%结束复制 >>%str_path_local%\%str_date%_log.bak echo. >>%str_path_local%\%str_date%_log.bak ::删除本地1天前的rar文件 FORFILES /P %str_path_local% /M *.rar /D -1 /C "cmd /c echo %time% deleting..@file.. &del @file">>%str_path_local%\%str_date%_del.bak ::删除本地7天前的bak记录文件 FORFILES /P %str_path_local% /M *.bak /D -7 /C "cmd /c echo %time% deleting..@file.. &del @file">>%str_path_local%\%str_date%_del.bak
本文首发于我的CSDN博客:https://blog.csdn.net/n_ithero/article/details/104037999
Windows自动备份(每天、每月最后一天、每个周日),自动清除备份命令
标签:调整 bat com ken 空格 文件 星期几 tin xcopy
原文地址:https://www.cnblogs.com/xuezhizhang/p/12228487.html