运行 robocopy bat 将整个驱动器复制到另一个驱动器 [关闭]
Posted
技术标签:
【中文标题】运行 robocopy bat 将整个驱动器复制到另一个驱动器 [关闭]【英文标题】:run robocopy bat to copy entire drive to another drive [closed] 【发布时间】: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
【问题讨论】:
【参考方案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?以上是关于运行 robocopy bat 将整个驱动器复制到另一个驱动器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如果通过计划任务调用 BAT 文件,则无法将文件复制到 UNC 目标
用于将文件复制到 50 多台远程计算机的 Robocopy 命令