You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows批处理MySQL备份脚本如何仅保留最近10个备份文件夹

解决方案

你只需要在原有备份逻辑执行完成后,新增一段按时间排序、删除超出10个的最早备份目录的逻辑即可,修改后的完整脚本如下:

@echo off
Title Get FileName With Date and Time
Call :GetFileNameWithDateTime MyCurrentDate
echo %MyCurrentDate%
cd backups
MkDir %MyCurrentDate%
cd ..
cd bin
mysqldump.exe -u -p --single-transaction --routines --triggers --host test.com --databases database1 > "../backups/%MyCurrentDate%/testBackup.sql"
cd ..
:: 以下为新增的旧备份清理逻辑
cd backups
:: 列出所有备份目录,按创建时间倒序排列,跳过最新的10个,剩余的全部强制删除
for /f "skip=10 delims=" %%d in ('dir /ad /b /o-d') do rd /s /q "%%d"
cd ..
pause & exit
::----------------------------------------------------------------------------------
:GetFileNameWithDateTime <FileName>
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set "MyDate=%%x"
set "%1=%MyDate:~0,4%-%MyDate:~4,2%-%MyDate:~6,2%-%MyDate:~8,2%-%MyDate:~10,2%"
Exit /B
::----------------------------------------------------------------------------------
改动说明
  • 新增的清理逻辑核心是dir /ad /b /o-d命令:
    • /ad表示仅筛选目录,排除文件
    • /b表示仅输出目录名称,不输出额外信息
    • /o-d表示按创建时间倒序排列,最新的目录排在最前面
  • for /f "skip=10 delims=" %%d表示跳过前10行(也就是最新的10个备份目录),对后面的每一行(即早于第10个的备份目录)执行rd /s /q "%%d"强制删除目录和目录内的所有文件
  • 逻辑执行时会先切到backups目录下操作,避免误删其他路径的文件

内容的提问来源于stack exchange,提问作者Mads Sander Høgstrup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:27:05