我正在努力解决如何处理有时在robocopy
期间返回2的部署脚本。命令和输出如下。
它返回2,表示"额外文件"。
总的来说,这似乎是成功的。我应该接受2成功吗?
------------------------------------------------------------------------------- ROBOCOPY :: Robust File Copy for Windows ------------------------------------------------------------------------------- Started : Tuesday, January 24, 2017 11:53:40 PM Source : C:\Download\Temp\\ Dest : C:\Inetpub\\ Files : *.* Options : *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /MT:8 /R:1000000 /W:30 ------------------------------------------------------------------------------ *EXTRA File 689351 C:\Inetpub\\admin\dynamicfile2.zip ------------------------------------------------------------------------------ Total Copied Skipped Mismatch FAILED Extras Dirs : 510 510 0 0 0 0 Files : 3564 0 3564 0 0 1 Bytes : 606.15 m 0 606.13 m 0 0 673.1 k Times : 0:00:00 0:00:00 0:00:00 0:00:00 Ended : Tuesday, January 24, 2017 11:53:40 PM
答案 0 :(得分:1)
如有疑问,请阅读documentation(虽然在这种情况下SS64可能是更好的来源):
下表列出并描述了Robocopy实用程序使用的返回代码。
0 没有复制文件。没有遇到任何故障。没有文件不匹配。文件已存在于目标目录中;因此,跳过了复制操作 1 所有文件都已成功复制 2 目标目录中有一些其他文件在源目录中不存在。没有复制文件 3 有些文件被复制了。其他文件存在。没有遇到任何故障 5 有些文件被复制了。有些文件不匹配。没有遇到任何故障 6 存在其他文件和不匹配的文件。没有复制文件,也没有遇到任何故障。这意味着文件已存在于目标目录中 7 文件被复制,存在文件不匹配,并且存在其他文件 8 几个文件没有复制。
注意任何大于8的值都表示复制操作期间至少有一次失败。
最多7个退出代码表示非错误运行状态。退出代码为8及以上表示错误。
就像Mathias已经说过的那样,无论你是否想要将额外的文件视为错误,都取决于你。如果您不关心额外或不匹配的文件/文件夹,只需检查大于7的退出代码:
& robocopy ...
if ($LastExitCode -gt 7) {
# an error occurred
exit $LastExitCode
}
exit 0
否则检查大于1的退出代码:
& robocopy ...
if ($LastExitCode -gt 1) {
# an error occurred
exit $LastExitCode
}
exit 0