简单的Windows Server 2008备份脚本

时间:2015-03-05 20:55:03

标签: batch-file backup windows-server-2008

我制作了简单的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路径。 我应该改变什么?

最好的问候。

1 个答案:

答案 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并且像......

相关问题