@echo off @echo 开始备份数据库 set hour=%Time:~0,2% if "%Time:~0,1%"==" " set hour=0%Time:~1,1% set now=%Date:~0,4%%Date:~5,2%%Date:~8,2%-%hour%%Time:~3,2%%Time:~6,2% set host=IP地址 set port=3306 set user=root set pass=123456 set dbname=escdb set back_path=D:\MySQL5\MySQL_back set backupfile=%back_path%\%dbname%-%now%.sql "D:\MySQL5\bin\mysqldump" -h%host% -P%port% -u%user% -p%pass% -c --add-drop-table %dbname% > %backupfile% @echo 数据库备份成功 @echo 删除2天前备份的文件 forfiles /p "%back_path%" /s /m *.sql /d -2 /c "cmd /c del @path" @echo 完成,3秒后程序退出
以下是对上边代码的解释:
@echo off
@echo 开始备份数据库 //命令行窗口中显示此条信息
set hour=%Time:~0,2% //将hour设置为此刻小时位的时间,从0位置开始取2位
if "%Time:0,1%"==" " set hour=0%Time:1,1% //(小时位如果是个位数例如9点,则默认不是09,而是 9,前一位位空)判断小时位第一位是否为空,如果为空则添加上0,如果不为空则不执行,hour为前一条语句设置的。
set now=%Date:0,4%%Date:5,2%%Date:8,2%-%hour%%Time:3,2%%Time:~6,2% //获取具体时间
set host=192.168.6.246 //设置数据库的ip地址
set port=3308 //设置数据库端口号
set user=root //设置用户名
set pass=123456 //设置用户密码
set dbname=abcd //设置数据库名称
set back_path=D:\MySQL5\MySQL_back //设置备份的数据库的存储文件夹路径
set backupfile=%back_path%%dbname%-%now%.sql //设置每次备份的数据库名称(此处为“数据库名-时间”)
"D:\MySQL5\bin\mysqldump" -h%host% -P%port% -u%user% -p%pass% -c --add-drop-table %dbname% > %backupfile% //备份数据库的语句。(前方引号中的路径,为数据库安装目录下,mysqldump.exe程序的路径)
@echo 数据库备份成功 //命令行窗口中显示此条信息
@echo 删除2天前备份的文件 //命令行窗口中显示此条信息
forfiles /p "%back_path%" /s /m *.sql /d -2 /c "cmd /c del @path" //删除文件修改日期为2天前的数据库备份文件(如果更改删除文件的时间,只需更改语句中数字)注意:如果没有两天前的备份,会报错,没关系
@echo 完成,3秒后程序退出 //命令行窗口中显示此条信息