powershell 内でこのコードを実行すると、奇妙な結果が得られます。
PS> .\test.bat; $lastexitcode
>exit /b 0
2
PS> cmd /c exit /b 0; $lastexitcode
0
誰かがバッチファイルのバージョンを修正する方法を説明できますか? 0
また、以外の終了値が正しく機能することも指摘したいと思います。
powershell 内でこのコードを実行すると、奇妙な結果が得られます。
PS> .\test.bat; $lastexitcode
>exit /b 0
2
PS> cmd /c exit /b 0; $lastexitcode
0
誰かがバッチファイルのバージョンを修正する方法を説明できますか? 0
また、以外の終了値が正しく機能することも指摘したいと思います。
PSv2で再現できましたがexit /b <code>
、PSv3でも期待通りに動いているようです。PSv2 の場合、/b
which 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で修正されていないわけではありません。
これらのソリューションはすべて機能します。誰かが説明できれば、私はそれをいただければ幸いです:
PS> & cmd.exe /c 'test.bat && exit'; $lastexitcode
>exit /b 0
0
PS> cmd.exe /c 'test.bat && exit'; $lastexitcode
>exit /b 0
0