【问题标题】:run robocopy bat to copy entire drive to another drive [closed]运行 robocopy bat 将整个驱动器复制到另一个驱动器 [关闭]
【发布时间】:2014-06-11 16:40:58
【问题描述】:

我正在尝试将整个驱动器 (d:) 的简单备份(镜像)运行到另一个驱动器 (k:)。我创建了一个定义源 (d:) 和目标 (k:) 的 .bat 文件 ('backup.bat'),并将此批处理文件放在 d 驱动器 (d:\temp) 上的文件夹中。当我双击批处理文件时,它将源定义为 d:\temp,而不是我在批处理文件中定义的源;丁:。

这是 .bat 文件中的文本:

@echo off
echo To begin backing up data:
pause
robocopy "D:" "K:" /L /v                 
echo.
pause
exit

这就是我双击 backup.bat 时显示的内容

如您所见,源定义为 d:\temp。这是批处理文件所在的位置,但在批处理文件中我将其定义为 D:。由于某种原因,目的地定义正确。

有什么想法吗?

-al

编辑:如果我将“/”添加到源和目标位置,请参见下面的代码,我会看到更奇怪的行为(参见屏幕截图)。源现在是定义的源和目标的组合,没有目标。

@echo off

echo To begin backing up data:
pause

robocopy "D:\" "K:\" /L /v


echo.            
pause
exit

而且,如果我从源和目标中删除“”......它可以工作!

@echo off

echo To begin backing up data:
pause

robocopy D:\ K:\ /L /v
echo.            
pause
exit

【问题讨论】:

    标签: windows batch-file windows-7 cmd robocopy


    【解决方案1】:

    使用"D:",您不是指定 D 盘 (D:\) 的 root 目录,而是指定 D 的 当前 目录相反,(在您的示例中为D:\temp)。

    要解决这个问题,只需将\ 添加到源规范(同时添加到目标规范)

    robocopy d:\ k:\ /L /v                 
    

    【讨论】:

    • 我已经尝试过了,它会产生更奇怪的东西。请参阅上面的编辑。
    • @PA。是正确的,我不仅需要添加\,还需要删除引号。感谢您的帮助。
    【解决方案2】:

    使用/E 选项。 还可以通过/? 检查其他必要/有用的参数,例如/copyall /ZB/DCOPY:DAT

    【讨论】:

      【解决方案3】:

      /L 选项试运行,实际上没有复制任何内容。

      来自 MS 网站: /l 指定仅列出文件(而不是复制、删除或时间戳)。

      这是我在复制和整个磁盘之前的试运行示例:

            Total    Copied   Skipped  Mismatch    FAILED    Extras                                                                                                                                                                                                             Dirs :     63346     63346         2         0         0         0                                                                                                                                                                                                            Files :    719564    719564         0         0         0         0                                                                                                                                                                                                            Bytes :   4.039 t   4.039 t         0         0         0         0                                                                                                                                                                                                            Times :   0:27:58   0:00:00                       0:00:00   0:27:57                                                                                                                                                                                                            Ended : Monday, September 6, 2021 9:25:35 AM  
      

      这是我的记事本,用于制作我的命令,(注意我只是删除 /L 以实际复制):

      用于测试(试运行): robocopy Q: G: /L /E /COPYALL /R:20 /W:15 /MT /NP /A-:SH /Z /V /TEE /LOG+:VMRobCp.log

      实际运行: robocopy Q: G: /E /COPYALL /R:20 /W:15 /MT /NP /A-:SH /Z /V /TEE /LOG+:VMRobCp.log

      【讨论】:

        【解决方案4】:

        我发现当您将路径放在源和/或目标的引号中时,最后一个斜杠后需要一个空格。如果您有嵌入的空格,则需要引号,因此您需要路径中最后一个斜杠后的空格,例如“c:\” 不是“c:\”

        无法真正告诉您 robocopy 发生了什么,但我所有的备份脚本都考虑到了这一点。

        祝你好运!

        【讨论】:

        • Fwiw,我想起了在引号内使用结尾斜杠后的空格的原因。似乎如果您省略空格,robocopy 不会看到有以斜杠结尾的路径,因此假定您输入了文件名。
        • 为什么不直接使用 /MIR?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-04
        • 1970-01-01
        • 1970-01-01
        • 2018-04-13
        • 2012-01-05
        • 2011-08-26
        • 1970-01-01
        相关资源
        最近更新 更多