【问题标题】:Using the current date in a backup batch script as a parameter for file names使用备份批处理脚本中的当前日期作为文件名的参数
【发布时间】:2012-01-31 18:50:46
【问题描述】:
我正在尝试使用计划任务备份我的 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 文件。
【问题讨论】:
标签:
windows
command-line
cron
zip
task
【解决方案1】:
CMD.exe 中有一个提供日期的伪变量。您还可以从 http://dotNetZip.codeplex.com 获取命令行 zip 工具。
执行您想要的操作的批处理文件如下所示:
@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