用批处理命令实现新建一个当天日期为命名的文件夹,同时将文件备份到该文件夹下,再删除五天之前备份文件

举例:要备份的目标文件路径:D:\Prod\datebase,备份到:E:\Prodbak,目的备份的文件夹以当天的日期为文件夹名,如今天则在E:\Prodbak产生一个... 举例:
要备份的目标文件路径:D:\Prod\datebase,
备份到:E:\Prodbak,
目的
备份的文件夹以当天的日期为文件夹名,如今天则在E:\Prodbak产生一个2013-07-11的文件夹名。
将D:\Prod\datebase下的文件备份到E:\Prodbak\......
删除五天以前备份文件夹。
请教如何用批处理来实现。最好简单并附带解释。谢谢!
展开
 我来答
xxpinqz
推荐于2021-01-07 · TA获得超过1323个赞
知道小有建树答主
回答量:1055
采纳率:0%
帮助的人:1312万
展开全部
@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"
)
追问

谢谢,现在以日期命名及备份都可以,但删除五天以前的数据,他会提示

“找不到系统文件”

我是XP SP3系统

追答

原来你没有每天备份啊,上面脚本是保留最新的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
)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式