2

powershell 内でこのコードを実行すると、奇妙な結果が得られます。

PS> .\test.bat; $lastexitcode
>exit /b 0
2

PS> cmd /c exit /b 0; $lastexitcode
0

誰かがバッチファイルのバージョンを修正する方法を説明できますか? 0また、以外の終了値が正しく機能することも指摘したいと思います。

4

2 に答える 2

1

PSv2で再現できましたがexit /b <code>、PSv3でも期待通りに動いているようです。PSv2 の場合、/bwhich meansを削除すると、期待どおりに動作し始めました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で修正されていないわけではありません。

于 2013-04-25T02:03:37.497 に答える
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
于 2013-04-25T01:52:39.957 に答える