帮忙写个批处理:按日期备份多个文件夹,并删除2个月前备份文件

2025-04-16 21:06:12
推荐回答(2个)
回答1:

xcopy /e /d /h /r /y "\\ls\资料" "E:\%Date:~0,4%%Date:~5,2%%Date:~8,2%\资料\"
xcopy /e /d /h /r /y "\\ls\留底" "E:\%Date:~0,4%%Date:~5,2%%Date:~8,2%\留底\"

 

@Echo Off&Setlocal Enabledelayedexpansion
Xcopy /e /d /h /r /y "\\ls\D\资料" "E:\备份\%Date:~0,4%%Date:~5,2%%Date:~8,2%\"
Rem Schtasks /create /tn "每日备份" /tr "cmd /c %0" /sc daily /st 12:00 /ru "system"
Echo LastDate^=date()-45 >%temp%\tmp.vbs
Echo FmtDate^=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2) >>%temp%\tmp.vbs
Echo wscript.echo FmtDate >>%temp%\tmp.vbs
For /f %%i in ('Cscript /nologo tmp.vbs') do (
For /f "tokens=*" %%j in ('dir/b/ad "E:\备份"^|findstr /r "\<20[0-9][0-9]"') do (
Set ft=%%~tj&Set ft=!ft:~0,4!!ft:~5,2!!ft:~8,2!
If !ft! lss %%i Echo Rd /q /s "%%j"
)
Pause

删除45天前的备份,是指删除那个文件夹的备份?上面写的是删除E:\备份里的45天前的文件.

回答2:

@echo off
at|find %0||at 23:00 /every:M,T,W,Th,F,S,Su %0
net use x: \\ip\D$ "密码" /user:"用户名"
xcopy /e /i /d /h /r /y "\\ls\资料" "E:\%Date:~0,4%%Date:~5,2%%Date:~8,2%\资料\"
xcopy /e /i /d /h /r /y "\\ls\留底" "E:\%Date:~0,4%%Date:~5,2%%Date:~8,2%\留底\"
for /f %%a in ('dir /b /o-d e:\') do set /a no+=1&if %no% gtr 30 (rd e:\%%a)

rem 这个批处理会自动建立一个任务计划,每天23点执行,然后把15天之前的备份文件夹都删除,但有一点,E盘下只能有备份文件夹,不能有其它的,否则,还要修改一下才行,例如备份文件夹都加上独有的“BK”字样,最后面一行里 'dir /b /o-d e:\' 改为'dir /b /o-d e:\*BK*'。