2012-01-31 27 views
2

我正在尝试用计划任务备份我的MySQL数据库。命令备份SQL是:将备份批处理脚本中的当前日期用作文件名的参数

mysqldump.exe -h localhost -u root databasename > databasebackup.sql 

我想这样做是当前日期添加到文件名,因此这将是databasebackup_2012-01-31.sql。甚至更多理想情况下,我会压缩文件databasebackup_2012-01-31.sql在zip文件databasebackup_2012-01-31.zip,因为sql文件大多包含非常好的可压缩文本。压缩后,sql文件将被删除,只有zip文件保持备份。

回答

3

CMD.exe中有一个伪变量提供日期。您还可以从http://dotNetZip.codeplex.com获取命令行压缩工具。

一个批处理文件来完成你想要的东西看起来是这样的:

@echo off 
@setlocal 
echo The date is %DATE% 

@set tag=%DATE:~-4%-%DATE:~7,2%-%DATE:~4,2% 
set backupfile=databasebackup.%tag%.sql 

echo backing up to: %backupfile% 

echo. 
echo ^<do the backup here^> 
echo. 
echo hello hello hello hello > %backupfile% 


@REM The DotNetZip download for ZIP Tools includes a command-line zip utility. 
@REM Get it from http://dotnetzip.codeplex.com. 

set zipit=\Program Files (x86)\Dino Chiesa\DotNetZip Tools 1.9\ZipIt.exe 
set unzip=\Program Files (x86)\Dino Chiesa\DotNetZip Tools 1.9\UnZip.exe 

set zipfile=%backupfile%.zip 

if exist %zipfile% (
echo deleting existing zip... 
del %zipfile% 
) 

"%zipit%" %zipfile% -s Readme.txt "Backed up on %DATE% at %TIME%" %backupfile% 

echo. 
@REM list the contents of the created zip 
"%unzip%" -l %zipfile% 

echo. 
echo ^<delete the sql file here^> 
echo. 
del %backupfile% 

@endlocal