date /T 命令的结果可能包含保留字符,参见。 Naming Files, Paths, and Namespaces
< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)
例如,如果您的日期包含 /(正斜杠),则 replace 它例如与_(低线,下划线)如下。
for /f "tokens=1* delims=" %%a in ('date /T') do set "datestr=%%a"
set "datestr=%datestr:/=_%"
rem add next line, cf. **edit**
set "datestr=%datestr: =%"
mkdir "C:\backup\%datestr%"
(注意并遵守适当的间距和" 引号)。通过this resource: mkdir,您应该避免在文件夹名称中使用以下字符:© ® " - & ' ^ ( ) 和@,因为它们会导致问题。
编辑 根据您对space 的评论,您是对的。我以前没有看到,甚至没有怀疑过,对不起。比较下一个(纯 CLI)输出:
==>for /f "tokens=1* delims=" %a in ('date /T') do @echo [%a]
[06.03.2015 ]
==>for /f "tokens=1" %a in ('date /T') do @echo [%a]
[06.03.2015]
==>echo [%date%]
[06.03.2015]
==>
因此,添加set "datestr=%datestr: =%" 或,而不是
for /f "tokens=1* delims=" %%a in ('date /T') do set "datestr=%%a"
set "datestr=%datestr:/=_%"
set "datestr=%datestr: =%"
简单地使用
"datestr=%date:/=_%"
其实我不知道你的locale %date% 格式;它可能会因mar 6, 2015 而失败……