mysql - 批处理文件时间戳问题
问题描述
我为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%
解决方案
您需要做的就是用变量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%"
推荐阅读
- nginx - Nginx托管多个域名的多个网页?
- c++ - 需要在 qt c++ 应用程序中找到崩溃问题的建议
- android - 如何从 Kotlin 的片段中传递上下文?
- c# - 比较两个文件夹的差异
- javascript - JS检查chrome iwallet扩展是否安装在用户chrome浏览器上?
- ajax - 如何将字典项从客户端(Ajax)传递到服务器端(MVC API)
- r - sparkR的read.df中是否有“报价”参数?
- django - 如何使用原始 SQL 而不是 django ORM 从数据库中检索数据
- rust - 正确解析 Clap ArgMatches 的惯用 rust 方法
- java - 编辑不同类中的位置值