首页 > 解决方案 > 批处理文件时间戳问题

问题描述

我为mysql数据库备份创建了一个批处理文件。这在 Windows 登录任务调度程序上运行。如果我在九点左右启动机器,这个任务不会运行它说访问被拒绝,其余时间它运行。在我看来,它介于 4 位时间戳与 3 位 945(对于 9.45 )与 1045 (对于(10.45))之间。这是我的猜测。请找到如何解决问题的代码。谢谢

@ECHO OFF

Echo Avoid Any MYSQL Transcations until backup completes

set TIMESTAMP=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%-%TIME:~0,2%%TIME:~3,2%
md e:\%TIMESTAMP%\am
CD /D d:\\bin\mysql\mysql5.7.9\bin\
mysql -s -e "SHOW TABLES FROM amazon" --user=* --password= * --skip-column-names > e:\tables.txt
for /f %%A in (e:\tables.txt) DO (mysqldump --user=* --password= * amazon %%A > e:\%TIMESTAMP%\am\%%A.sql)
mysqldump --user=* --password= *  --no-create-db --no-create-info --no-data --routines am > e:\%TIMESTAMP%\am\procNtrig.sql
CD /D e:\
C:\7zip\7za a  %TIMESTAMP%.zip e:\%TIMESTAMP%\*
RMDIR /S  /q e:\%TIMESTAMP%

标签: mysqlbatch-file

解决方案


您需要做的就是用变量0中的空格替换。%TIMESTAMP%变量中唯一%time%有空格的时间是单个数字字符时间。1-9

所以看到你只有时间问题,我们可以专门操纵它。

您应该能够以更好的结果运行它。

@ECHO OFF

Echo Avoid Any MYSQL Transcations until backup completes

set "times=%time:~0,5%"
set "times=%times::=%"
set "times=%times: =0%"
set "timestamp=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%-%times%

md "e:\%timestamp%\am"
CD /D "d:\bin\mysql\mysql5.7.9\bin\"
mysql -s -e "SHOW TABLES FROM amazon" --user=* --password= * --skip-column-names > e:\tables.txt
for /f %%A in (e:\tables.txt) DO (mysqldump --user=* --password= * amazon %%A > e:\%timestamp%\am\%%A.sql)
mysqldump --user=* --password= *  --no-create-db --no-create-info --no-data --routines am > e:\%timestamp%\am\procNtrig.sql
CD /D e:\
C:\7zip\7za a  %timestamp%.zip e:\%timestamp%\*
RMDIR /S /q "e:\%timestamp%"

推荐阅读