【问题标题】:Simple Windows Server 2008 Backup Script简单的 Windows Server 2008 备份脚本
【发布时间】:2015-03-05 20:55:03
【问题描述】:

我制作了简单的 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 的文件夹。只有最后一部分不起作用 - 它说不正确的路径。 我应该改变什么?

最好的问候。

【问题讨论】:

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


    【解决方案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,您应该避免在文件夹名称中使用以下字符:© ® " - &amp; ' ^ ( )@,因为它们会导致问题。

    编辑 根据您对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 而失败……

    【讨论】:

    • 我还是有错误。我认为问题出在 SET 中。它创建日期如下的文件夹:“2015-03-06” - 带空格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    相关资源
    最近更新 更多