找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23867|回复: 7

[其他] [已解决]批处理如何判断mysql备份是否成功并调用RAR压缩?

[复制链接]
发表于 2010-9-26 12:53:19 | 显示全部楼层 |阅读模式
  1. 新建:mysql_backup.bat文件,内容如下:


  2. @echo off
  3. echo.
  4. echo MySQL数据库备份

  5. echo *****************************
  6. echo.
  7. echo 今天是 %date%
  8. echo 时间是 %time%
  9. echo.
  10. echo *****************************

  11. rem 注释:"Ymd=%date:~,4%%date:~5,2%%date:~8,2%";
  12. set "Ymd=%date:~,5%%date:~5,2%%date:~7,3%"

  13. md "F:\Backup\%Ymd%"

  14. "D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump" --opt -Q -uroot -ppasswords --default-character-set=utf8 DBname > "F:\Backup\%Ymd%\DBname.sql"

  15. echo.

  16. echo MySQL数据库备份完成,请进行检查。。。

  17. echo.
  18. echo.
  19. rem exit
  20. rem pause


  21. DBname为你要备份的数据库名称。
复制代码
疑问1:"D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump" --opt -Q -uroot -ppasswords --default-character-set=utf8 DBname > "F:\Backup\%Ymd%\DBname.sql"    这里 如何好像PHP 或者 Java那样, 给这个命令赋值一个变量名 然后判断布尔值,从而知道是否执行成功。 例如 :
  1. <?php
  2. $result = $a >$b;
  3. if ( $result){
  4.     echo "$a >$b ture"
  5. }else{
  6.     echo "$a >$b false"
  7. }

  8. ?>
复制代码
疑问2:rem 注释:"Ymd=%date:~,4%%date:~5,2%%date:~8,2%";
set "Ymd=%date:~,5%%date:~5,2%%date:~7,3%"

这里两个赋值我不是很明白,特别是后面对date的操作, 注释掉的是原来作者的,我在网上搜到的代码,经过自己修改之后使用。现在就是不能知道这个日期操作的原理。


疑问3:执行完备份之后,如何调用RAR.EXE来将"F:\Backup\%Ymd%\DBname.sql"这个sql文件压缩成zip格式的文件。

第一次用BAT,麻烦大家指点了。 谢谢

[ 本帖最后由 fishman 于 2010-9-26 14:48 编辑 ]

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2010-9-26 13:03:10 | 显示全部楼层
1:
  1. @echo off
  2. echo.
  3. echo MySQL数据库备份

  4. echo *****************************
  5. echo.
  6. echo 今天是 %date%
  7. echo 时间是 %time%
  8. echo.
  9. echo *****************************

  10. rem 注释:"Ymd=%date:~,4%%date:~5,2%%date:~8,2%";
  11. set "Ymd=%date:~,5%%date:~5,2%%date:~7,3%"

  12. md "F:\Backup\%Ymd%"

  13. "D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump" --opt -Q -uroot -ppasswords --default-character-set=utf8 DBname > "F:\Backup\%Ymd%\DBname.sql"
  14. if errorlevel 1 (
  15.     echo fail
  16. ) else (
  17.     echo success
  18. )
  19. echo.

  20. echo MySQL数据库备份完成,请进行检查。。。

  21. echo.
  22. echo.
复制代码
发表于 2010-9-26 13:03:44 | 显示全部楼层
2:

批处理set命令截取字符详解
http://bbs.bathome.net/thread-996-1-1.html

批处理set命令变量字符截取点点通
http://bbs.bathome.net/thread-40-1-1.html

批处理新手set命令截取字符练习工具
http://bbs.bathome.net/thread-1149-1-1.html
 楼主| 发表于 2010-9-26 13:18:51 | 显示全部楼层
原帖由 Batcher 于 2010-9-26 13:03 发表
1:@echo off
echo.
echo MySQL数据库备份

echo *****************************
echo.
echo 今天是 %date%
echo 时间是 %time%
echo.
echo *****************************

rem 注释:"Ymd=%date:~,4%%da ...



  1. "D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump" --opt -Q -uroot -ppasswords --default-character-set=utf8
  2. DBname > "F:\Backup\%Ymd%\DBname.sql"
  3. if errorlevel 1 (
  4.     echo MySQL备份失败请检查
  5. ) else (
  6.     echo MySQL数据库备份完成,请进行检查。。。
  7. )
  8. echo.
复制代码


这个的确可以判断到是否执行成功。

但是还有一个问题啊, 就算执行不成功, 他还是会将 "F:\Backup\%Ymd%\DBname.sql" 这个sql文件 导出到这个路径。 如何做到没执行成功就不导出这个sql文件呢?
发表于 2010-9-26 13:20:18 | 显示全部楼层
前两个管理员大人已经说了 第三个问题的话。。 刚才测试的时候可以用call + winrar执行路径 +文件名来执行  不过会弹出一个确定窗口 这个我就不会了 。。
我用的好压 写的是
  1. call   "D:\Program Files\HaoZip\HaoZip.exe" E:\test.txt
复制代码
不过运行后会弹出一个窗口 还是要手动确定的 而且rar文件的保存目录也不好确定 。。
 楼主| 发表于 2010-9-26 13:24:24 | 显示全部楼层
原帖由 robinsnelson 于 2010-9-26 13:20 发表
前两个管理员大人已经说了 第三个问题的话。。 刚才测试的时候可以用call + winrar执行路径 +文件名来执行  不过会弹出一个确定窗口 这个我就不会了 。。
我用的好压 写的是call   "D:\Program Files\HaoZip\HaoZip ...


我这个是放在办公室的windows03  ERP的数据库上  计划任务执行的, 不能要提示的。 不然失去意义了。   


上面管理员虽然说了 如何判断执行是否成功, 我测试了一下, 但是发现,虽然可以判断是否执行成功,但是就算执行失败,那个sql文件,也会生成到对应的路径去。   就算这个数据库不存在,或者MySQL服务没有起来,他也生成个空的sql。 如何让他失败就不要导出呢?
发表于 2010-9-26 14:01:51 | 显示全部楼层
如果不想要导出的那个文件  可以在判断errorlevel后执行一个判断语句  不过这样麻烦一些  压缩文件的问题可以试试下面这条命令
  1. "C:\Program Files\WinRAR\WinRAR.exe" a -df "F:\Backup\%Ymd%\DBname.sql.rar" "F:\Backup\%Ymd%\DBname.sql"
复制代码
这个是参考了winrar.exe的命令行得出的命令  应该能达到你的执行效果了
-df这个开关是说删除源文件的意思 相当于压缩后删除源文件  不想要的话可以删除掉
这样的话 修改后的命令就是下面这个样子了
  1. @echo off
  2. echo.
  3. echo MySQL数据库备份

  4. echo *****************************
  5. echo.
  6. echo 今天是 %date%
  7. echo 时间是 %time%
  8. echo.
  9. echo *****************************

  10. rem 注释:"Ymd=%date:~,4%%date:~5,2%%date:~8,2%";
  11. set "Ymd=%date:~,5%%date:~5,2%%date:~7,3%"

  12. md "F:\Backup\%Ymd%"

  13. "D:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump" --opt -Q -uroot -ppasswords --default-character-set=utf8 DBname > "F:\Backup\%Ymd%\DBname.sql"
  14. if errorlevel 1 (
  15.     echo fail  
  16.   del "F:\Backup\%Ymd%\DBname.sql" /f /q
  17. ) else (
  18.     echo success  
  19.   "C:\Program Files\WinRAR\WinRAR.exe" a -df "F:\Backup\%Ymd%\DBname.sql.rar" "F:\Backup\%Ymd%\DBname.sql"
  20. )
  21. echo.

  22. echo MySQL数据库备份完成,请进行检查。。。

  23. echo.
  24. echo.
复制代码
 楼主| 发表于 2010-9-26 14:49:05 | 显示全部楼层

回复 7楼 的帖子

谢谢你了。     感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:31 , Processed in 0.024262 second(s), 11 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表