有人可以向我解释这个备份脚本吗?

时间:2012-02-01 13:58:17

标签: mysql batch-file backup mysqldump

我有一个用于备份myqldump的批处理文件,这个工作正常。但我不明白代码。有人可以向我解释一下。

for /f "tokens=1" %%i in ('date /t') do set DATE_DOW=%%i

for /f "tokens=2" %%i in ('date /t') do set DATE_DAY=%%i

for /f %%i in ('echo %date_day:/=-%') do set DATE_DAY=%%i
for /f %%i in ('time /t') do set DATE_TIME=%%i
for /f %%i in ('echo %date_time::=-%') do set DATE_TIME=%%i

:: here i make my backup 
"C:\Program Files\xampp\mysql\bin\mysqldump" -u root mamzel > "C:\Program Files\xampp\mysql\bin\%DATE_DAY%_%DATE_TIME%_mamzel10.sql"
at /delete /yes

at 09:00 /every:maandag,woensdag,donderdag d:\mysqlBackup.bat

提前致谢!

1 个答案:

答案 0 :(得分:3)

for /f "tokens=1" %%i in ('date /t') do set DATE_DOW=%%i
for /f "tokens=2" %%i in ('date /t') do set DATE_DAY=%%i

如果采用美国时间格式,date /t将日期输出为Wed 02/01/2012令牌(未指定delims)将使用空格作为分隔因子来分隔该输出。因此令牌1 = Wed和令牌2 = 02/01/2012。因此,您要分配DATE_DOW=WedDATE_DAY=02/01/2012。看到日子不是英文,它可能形成为年/月/日。

for /f %%i in ('echo %date_day:/=-%') do set DATE_DAY=%%i

这会从日期中删除/并将其替换为-,因此您的输出为02-01-2012,而不是02/01/2012

for /f %%i in ('time /t') do set DATE_TIME=%%i
for /f %%i in ('echo %date_time::=-%') do set DATE_TIME=%%i

这与第一部分完全相同,只是它抓住了时间格式。第二行用短划线:替换冒号-

"C:\Program Files\xampp\mysql\bin\mysqldump" -u root mamzel > "C:\Program Files\xampp\mysql\bin\%DATE_DAY%_%DATE_TIME%_mamzel10.sql"

然后使用新的日期和时间格式将其转储到带时间戳的转储文件。