【问题标题】:Robocopy $lastexitcode/$? inconsistent behaviors depending if the destination path is local or on a server机器复制 $lastexitcode/$?不一致的行为取决于目标路径是本地路径还是服务器上
【发布时间】:2018-07-31 09:22:55
【问题描述】:

我正在尝试使用 robocopy 在文件夹之间复制一些文件。完成代码后,我想触发其他东西。在我的代码中,我尝试使用 $lastexitcode/$?确定 robocopy 是否已成功运行。当它完成并且不再需要复制时,它应该返回“$lastexitcode/$?: True/0”。但是我注意到它的行为会有所不同,具体取决于目标路径是本地路径还是服务器上。

一个

while ($true) {
  robocopy C:\Users\Desktop\1 C:\user\desktop\tmp *
  write-host $? $LASTEXITCODE
}

B

while ($true) {
  robocopy C:\Users\Desktop\1 \\ABC\tmp *
  write-host $? $LASTEXITCODE
}

对于代码 A,控制台在第一次完成复制时返回“False 1”,在随后的运行中返回“True 0”。 但是对于代码 B,即使在后续运行中,控制台也会返回“False 1”。

有人遇到过类似的问题,有什么规避的建议吗?

谢谢 托纳尔

【问题讨论】:

  • robocopy 使用一些非零退出代码(值低于 8)来传达非错误状态信息。自动变量 $? 包含一个布尔值,指示最后一个命令是否成功运行,这对 PowerShell cmdlet 非常有用,但对于外部命令则不太有用。
  • @AnsgarWiechers 我从 powershell 知道每个错误代码的含义。这不是我要问的。而且我没有使用任何外部代码。
  • @DavidBrabant 感谢发帖,但这不是我要的。
  • 您能否为每个示例提供 2 个后续命令运行的输出?

标签: powershell robocopy


【解决方案1】:

感谢@Bacon Bits,添加一些参数后问题得到解决:

while ($true) {
  robocopy C:\Users\Desktop\1 \\ABC\tmp * /DST /FFT
  write-host $? $LASTEXITCODE
}

【讨论】:

    猜你喜欢
    • 2018-07-23
    • 1970-01-01
    • 2019-05-17
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2013-01-06
    • 2016-01-25
    相关资源
    最近更新 更多