【发布时间】: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