如何使用带有 windows 的 .bat 进行备份?

How to do a backup with .bat with windows?

我有一个用于备份的 .bat 文件,但我想做另一个用于删除最旧文件的 .bat 文件。有人可以帮助我吗?

set dia=%DATE:~0,2%
echo %dia%
if exist f:\exist.txt goto OK
echo KKKKKKKKKK
pause
exit

:OK
md f:\backup
md f:\backup\%dia%
xcopy d:\dat\*.* f:\backup\%dia%\*.* /s /c /h /r /e /y /j
echo TODO OK
pause


请仔细阅读!该脚本在 rmdir 行中有保护措施 echo。在您 100% 确定脚本执行您想要的操作之前,请不要删除它。

@echo off
for /f "tokens=2 delims=.=" %%i in ('wmic os get localdatetime /value') do set result=%%i
set "mydate=%result:~0,8%"
robocopy "d:\dat" "f:\backup\%mydate%" /MIR /Z
for /f "skip=4 delims=" %%a in ('dir /b /ad /o-d "f:\backup\"') do echo rmdir /S/Q "%%~fa"
pause

因此脚本会在您每次 运行 时为每个日期 yyyymmmdd 创建一个文件夹,如果该文件夹已经存在,即您 运行 一天备份两次,它将只更新文件,如果它们存在则不会重新创建任何文件夹。

第二个for循环你要小心了。它将按降序日期对文件夹进行排序,即最新创建的文件夹将首先列出。所以你会在这里看到我有 skip=4 意味着它将跳过前 4 个最新文件夹,并删除其余的。所以如果你想保留两个最新的备份,然后做 skip=2 等等

仅将日期修改为 yyyymm,更改为 set "mydate=%result:~0,6%"。你明白了。