@echo off
::启用了延迟变量扩展,允许在代码块中使用 !variable! 来访问变量的最新值。
setlocal enabledelayedexpansion
SET YYYY=%DATE:~0,4%
SET MM=%DATE:~5,2%
SET DD=%DATE:~8,2%
echo %YYYY%-%MM%-%DD% %TIME%
:: 设置数据库连接信息
set DB_USER=root
set DB_PASSWORD=1234
set DB_NAME=erp
:: 设置要忽略的表列表
set TABLES_TO_IGNORE=newtable_1 newtable_2
:: 初始化忽略参数
set IGNORE_PARAMS=
:: 遍历表列表并生成忽略参数 在 for 循环中,使用 !IGNORE_PARAMS! 而不是 %IGNORE_PARAMS%,以确保每次循环都能获取到最新的变量值。
for %%t in (%TABLES_TO_IGNORE%) do (
set IGNORE_PARAMS=!IGNORE_PARAMS! --ignore-table=%DB_NAME%.%%t
)
echo %IGNORE_PARAMS%
:: 构建 mysqldump 命令
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump" -h127.0.0.1 -P3306 -u %DB_USER% -p%DB_PASSWORD% %DB_NAME% %IGNORE_PARAMS% >%DB_NAME%_%YYYY%-%MM%-%DD%.sql
:: 输出完成信息
echo 数据库导出完成! %TIME%
endlocal
pause