木木的布劳格

  • 首页
  • 学无止尽
  • 愉悦生活
  • 中医
  • 软件
  • 单反摄影
  • 收藏的软件
  • About Me
木木的布劳格
记录生活点滴的静默博客
  1. 首页
  2. 其他
  3. 正文

备份文件留存归档批处理脚本

2 2 月, 2026 54点热度 0人点赞 0条评论

Windows批处理脚本

用于数据库备份文件(.nb3)的自动归档与清理,核心逻辑是“保留最新N个文件,超量则移动/删除”。

  • 文档1:单目录备份管理脚本(可独立运行),负责单个“核心目录→归档目录”的文件转移与清理(核心目录超15个则移归档,归档目录超45个则删除)。
  • 文档2:批量目录调度脚本,预定义组“核心目录|归档目录”对,循环调用文档1处理每组目录,实现多目录批量备份管理。

DBsyc_main.bat

@echo off
chcp 936 >nul 2>&1
setlocal enabledelayedexpansion

:: 目录对列表(核心目录|归档目录)
set "dir1=全路径备份目录1|全路径归档目录1"
set "dir2=全路径备份目录2|全路径归档目录2"
set "dir3=全路径备份目录3|全路径归档目录3"
set "dir4=全路径备份目录4|全路径归档目录4"

:: 循环调用单目录脚本(确保单目录脚本与当前脚本同目录)
call :call_single_dir "%dir1%"
call :call_single_dir "%dir2%"
call :call_single_dir "%dir3%"
call :call_single_dir "%dir4%"

echo.
echo ==============================================
echo 所有目录处理完成!
echo ==============================================
endlocal
::pause
exit /b

:: 子程序:调用单目录脚本
:call_single_dir
set "pair=%~1"
for /f "tokens=1,2 delims=|" %%a in ("%pair%") do (
set "core_path=%%a"
set "archive_path=%%b"
)
echo.
echo 调用单目录脚本处理:!core_path! → !archive_path!
call "全路径\单目录备份管理.bat" "!core_path!" "!archive_path!"
goto :eof

单目录备份管理.bat

 

@echo off
chcp 936 >nul 2>&1
setlocal enabledelayedexpansion

:: 接收主脚本传递的参数(核心路径、归档路径,已修正为W10_Dat)
set "core_path=%~1"
set "archive_path=%~2"
set "backup_ext=nb3" :: 备份文件扩展名
set "keep_core_num=15" :: 核心保留数
set "keep_archive_num=45" :: 归档保留数

:: 输出处理信息
echo.
echo ==============================================
echo 处理目录对:
echo 核心目录:"!core_path!"
echo 归档目录:"!archive_path!"
echo ==============================================

:: 1. 创建核心目录(不存在则创建)
if not exist "!core_path!\" (
echo [提示] 创建核心目录:!core_path!
mkdir "!core_path!" >nul 2>&1
if !errorlevel! neq 0 (echo [错误] 创建核心目录失败 & goto :eof)
)

:: 2. 创建归档目录(不存在则创建)
if not exist "!archive_path!\" (
echo [提示] 创建归档目录:!archive_path!
mkdir "!archive_path!" >nul 2>&1
if !errorlevel! neq 0 (echo [错误] 创建归档目录失败 & goto :eof)
)

:: 3. 核心目录:移动超量文件
set "file_count=0" & set "moved_count=0"
for /f "delims=" %%f in ('dir /b /a-d /o-d "!core_path!\*.%backup_ext%" 2^>nul') do (
set /a file_count+=1
if !file_count! gtr !keep_core_num! (
echo 移动旧备份:"%%f"
move /y "!core_path!\%%f" "!archive_path!\%%f" >nul
if !errorlevel! equ 0 (set /a moved_count+=1) else (echo [错误] 移动失败:"%%f")
)
)
if !file_count! equ 0 (echo [核心目录] 无 .%backup_ext% 文件) else (echo [核心目录] 共!file_count!个,移动!moved_count!个(保留!keep_core_num!个))

:: 4. 归档目录:删除超量文件
set "file_count=0" & set "deleted_count=0"
for /f "delims=" %%f in ('dir /b /a-d /o-d "!archive_path!\*.%backup_ext%" 2^>nul') do (
set /a file_count+=1
if !file_count! gtr !keep_archive_num! (
echo 删除旧归档:"%%f"
del /f /q "!archive_path!\%%f" >nul
if !errorlevel! equ 0 (set /a deleted_count+=1) else (echo [错误] 删除失败:"%%f")
)
)
if !file_count! equ 0 (echo [归档目录] 无 .%backup_ext% 文件) else (echo [归档目录] 共!file_count!个,删除!deleted_count!个(保留!keep_archive_num!个))

endlocal
exit /b

 

文件顺序:按修改时间降序处理(最新的文件优先保留);
错误处理:创建目录失败会终止脚本;移动/删除文件失败时输出错误但继续处理;
编码依赖:需确保系统支持GBK编码(chcp 936),否则中文可能乱码;
参数传递:文档2调用文档1时,需确保文档1的路径正确。
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: bat
最后更新:2 2 月, 2026

chat

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
标签聚合
python win10 序列号 CENTOS wm PHP 激活 c#
广告
分类
  • C sharp
  • Delphi
  • Python
  • VPS
  • 中医
  • 伤寒论
  • 其他
  • 单反摄影
  • 学无止尽
  • 工作相关
  • 愉悦生活
  • 未分类
  • 软件

COPYRIGHT © 2023 木木的布劳格. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang