用批处理命令实现新建一个当天日期为命名的文件夹,同时将文件备份到该文件夹下,再删除五天之前备份文件
举例:要备份的目标文件路径:D:\Prod\datebase,备份到:E:\Prodbak,目的备份的文件夹以当天的日期为文件夹名,如今天则在E:\Prodbak产生一个...
举例:
要备份的目标文件路径:D:\Prod\datebase,
备份到:E:\Prodbak,
目的
备份的文件夹以当天的日期为文件夹名,如今天则在E:\Prodbak产生一个2013-07-11的文件夹名。
将D:\Prod\datebase下的文件备份到E:\Prodbak\......
删除五天以前备份文件夹。
请教如何用批处理来实现。最好简单并附带解释。谢谢! 展开
要备份的目标文件路径:D:\Prod\datebase,
备份到:E:\Prodbak,
目的
备份的文件夹以当天的日期为文件夹名,如今天则在E:\Prodbak产生一个2013-07-11的文件夹名。
将D:\Prod\datebase下的文件备份到E:\Prodbak\......
删除五天以前备份文件夹。
请教如何用批处理来实现。最好简单并附带解释。谢谢! 展开
1个回答
展开全部
@echo off
rem 下两句设置源文件路径及目标文件路径
set "src=D:\Prod\datebase"
set "dst=E:\Prodbak"
rem 复制源文件至目标目录,自动创建当前日期目录。
xcopy "%src%\*.*" "%dst%\%date:~,4%-%date:~5,2%-%date:~8,2%\" /ryhs
rem 利用/o-n参数从大到小排列,删除第5个以后的目录(这里取巧用法,但是简单高效)
rem 如果不合适,请追问。
for /f "skip=5 delims=" %%a in ('dir /b/ad/o-n "%dst%\????-??-??"') do (
rd /s/q "%%a"
)
追答
原来你没有每天备份啊,上面脚本是保留最新的5个,rd /s/q "%%a"改为rd /s/q "%dst%\%%a"
如果要删除2013-07-07之前的则要计算了。
@echo off
set "src=D:\Prod\datebase"
set "dst=E:\Prodbak"
xcopy "%src%\*.*" "%dst%\%date:~,4%-%date:~5,2%-%date:~8,2%\" /ryhs
for /f "tokens=1-3 delims=/- " %%a in ("%date%")do set/a y=%%a,m=1%%b%%100,d=1%%c%%100,"m=(m+9)%%12,y-=m/10+1900,i=365*y+y/4+(m*153+2)/5+d-1"
for /f "delims=" %%i in ('dir /b/ad/o-n "%dst%\????-??-??"') do (
setlocal enabledelayedexpansion
for /f "tokens=1-3 delims=/- " %%a in ("%%i")do set/a y=%%a,m=1%%b%%100,d=1%%c%%100,"m=(m+9)%%12,y-=m/10+1900,i-=365*y+y/4+(m*153+2)/5+d-1"
if !i! gtr 5 rd /s/q "%dst%\%%i"
endlocal
)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询