0

xxxx当我像这样运行我的数据库备份文件时:

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

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

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

4

2 回答 2

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%

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

于 2012-05-30T08:38:07.547 回答
0

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

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

%DATE:/=-%%TIME::=-%
于 2012-05-30T08:33:24.520 回答