我试图将整个驱动器(d:)运行一个简单的备份(镜像)到另一个驱动器(k:)。我创建了一个.bat文件('backup.bat'),定义了源盘(d:)和目标盘(k:),并将这个批处理文件放在d盘的一个文件夹中(d:\temp)。当我双击该批处理文件时,它将源文件定义为d:\temp,而不是我在批处理文件中定义的d:。
这是.bat文件中的文本。
@echo off
echo To begin backing up data:
pause
robocopy "D:" "K:" /L /v
echo.
pause
exit
当我双击backup.bat文件时,显示的内容是这样的:
如你所见,源被定义为d:\temp。这是批处理文件的位置,但在批处理文件中,我把它定义为d:。由于某些原因,目的地的定义是正确的。
有什么办法吗?
-阿尔
EDIT:如果我在源和目标位置添加'',见下面的代码,我看到了更奇怪的行为(见截图)。现在,源是定义的源和目的地的组合,没有目的地。
@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
与 "D:"
你是 不 指定 根 D盘的目录(D:\
)但 当前 D目录代替,(D:\temp
在你的例子中)。)
要解决这个问题,只需在您的例子中添加 \
到源规格(同时也到源规格)。
robocopy d:\ k:\ /L /v
使用 /E
选项.同时检查其他必要的有用参数,如 /copyall
/ZB
或 /DCOPY:DAT
通过 /?
.
我发现,当你把一个路径的源和或目的地的引号后需要一个空格。 如果你有内嵌的空格,你需要引号,因此你需要在路径的最后一个斜线后的空格,例如 "c:\"而不是 "c:\"
不能告诉你那里的robocopy是怎么回事,但我所有的备份脚本都考虑到了这一点。
祝您好运