[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

  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 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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.
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 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文件呢?

TOP

前两个管理员大人已经说了 第三个问题的话。。 刚才测试的时候可以用call + winrar执行路径 +文件名来执行  不过会弹出一个确定窗口 这个我就不会了 。。
我用的好压 写的是
  1. call   "D:\Program Files\HaoZip\HaoZip.exe" E:\test.txt
复制代码
不过运行后会弹出一个窗口 还是要手动确定的 而且rar文件的保存目录也不好确定 。。

TOP

原帖由 robinsnelson 于 2010-9-26 13:20 发表
前两个管理员大人已经说了 第三个问题的话。。 刚才测试的时候可以用call + winrar执行路径 +文件名来执行  不过会弹出一个确定窗口 这个我就不会了 。。
我用的好压 写的是call   "D:\Program Files\HaoZip\HaoZip ...


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


上面管理员虽然说了 如何判断执行是否成功, 我测试了一下, 但是发现,虽然可以判断是否执行成功,但是就算执行失败,那个sql文件,也会生成到对应的路径去。   就算这个数据库不存在,或者MySQL服务没有起来,他也生成个空的sql。 如何让他失败就不要导出呢?

TOP

如果不想要导出的那个文件  可以在判断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.
复制代码

TOP

回复 7楼 的帖子

谢谢你了。     感谢

TOP

返回列表