我有一个用于备份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
提前致谢!
答案 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=Wed
和DATE_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"
然后使用新的日期和时间格式将其转储到带时间戳的转储文件。