我制作了简单的Win Serv 2008 R2备份脚本(内置增加)
wbadmin start backup -backupTarget:\\winee\vhds\backup\ -allcritical -systemState -include:c: -quiet
for /f "tokens=1* delims=" %%a in ('date /T') do set datestr=%%a
mkdir C:\backup\%datestr%
XCOPY "Z:\backup\" "C:\backup\%datestr%"
简单来说 - 我想复制Z:\ backup中的所有文件夹和文件(映射磁盘 - 它等于\ winee \ vhds \ backup到另一个自动命名为当前DATE的文件夹。只有最后一部分不起作用 - 它说Incorrent路径。 我应该改变什么?
最好的问候。
答案 0 :(得分:1)
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:/=_%"
事实上,我不知道您的区域设置 %date%
格式;它可能会失败mar 6, 2015
并且像......