如何真正理解2的robocopy返回码

时间:2017-01-25 06:17:04

标签: powershell robocopy

我正在努力解决如何处理有时在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

1 个答案:

答案 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