【问题标题】:Batch File error when using %time%使用 %time% 时出现批处理文件错误
【发布时间】:2012-05-30 08:29:26
【问题描述】:

xxxx 当我像这样运行我的 DB 备份文件时:

@echo off
"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump" -hlocalhost -uroot -pxxxxx --all-databases > "D:\DB backups\AllDBs_%date%.sql"

它工作正常。一旦我添加了 %time% 占位符,它就不再工作了。

@echo off
"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump" -hlocalhost -uroot -pxxxxx --all-databases > "D:\DB backups\AllDBs_%date%_%time%.sql"

文件名、目录名或卷标语法不正确。

有人知道为什么这不起作用吗?我搜索了互联网,但没有发现任何说它不应该工作的东西。

【问题讨论】:

  • 有没有办法在文件名中包含当前时间?

标签: windows batch-file


【解决方案1】:

如果您想要日期和时间,最好使用以下方法:

for /f "skip=1" %%x in ('wmic OS GET LocalDateTime') do if not defined LocalDateTime set LocalDateTime=%%x
set MyDate=%LocalDateTime:~0,8%
set MyTime=%LocalDateTime:~8,6%

这保证是已知格式(即只有没有任何分隔符的数字)。而且无论您的区域设置如何,您都绝对不会遇到无效字符的问题。

【讨论】:

  • 非常感谢这个替代方案!
【解决方案2】:

在批处理中,%time% 变量包含用于有效 Windows 文件名的无效字符。

使用它来删除它们并将无效字符替换为-'s。

%DATE:/=-%%TIME::=-%

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2020-08-31
    • 2018-04-21
    • 1970-01-01
    相关资源
    最近更新 更多