批处理文件时间戳问题

时间:2019-05-20 05:00:54

标签: mysql batch-file

我已经为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%

1 个答案:

答案 0 :(得分:0)

您需要做的就是用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%"