使用%time%时出现批处理文件错误

时间:2012-05-30 08:29:27

标签: windows batch-file

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

@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"
  

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

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

2 个答案:

答案 0 :(得分:2)

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

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%

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

答案 1 :(得分:0)

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

使用它删除它们并用-替换无效字符。

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