在PowerShell中运行此代码会产生奇怪的结果:
PS> .\test.bat; $lastexitcode
>exit /b 0
2
PS> cmd /c exit /b 0; $lastexitcode
0
有人可以解释如何更正批处理文件版本吗?我还想指出0
以外的退出值正常工作。
答案 0 :(得分:1)
我能够在PSv2中使用exit /b <code>
进行重现,它似乎在PSv3中按预期工作。对于PSv2,当我删除/b
时,它开始按预期工作,这意味着When used in a batch script, this option will exit only the script (or subroutine) but not CMD.EXE
。
有关PowerShell处理退出代码的问题报告错误: https://connect.microsoft.com/PowerShell/SearchResults.aspx?SearchQuery=exit%2520code
我没有特别看到这一点,但这并不是说它没有在PSv3中修复。
答案 1 :(得分:0)
所有这些解决方案都有效。如果有人能解释我会很感激:
PS> & cmd.exe /c 'test.bat && exit'; $lastexitcode
>exit /b 0
0
PS> cmd.exe /c 'test.bat && exit'; $lastexitcode
>exit /b 0
0