タイトルの通りです。
既存のバッチファイル(.bat)が新規構築したサーバ上で問題なく稼働することを確認するために、バッチ実行してリターンコードを確認したかったのですが、バッチの処理終了時にコマンドプロンプトの画面が閉じてしまい、リターンコードを取得できず困っていました。
バッチファイルを修正し「exit /b N」とexitすれば解決なのですが、バッチファイルは既存流用の方針のため、ソース修正はしたくない。
やりたいこと
バッチファイルを実行し、リターンコードを取得したい。
問題点
バッチファイルの実行が完了するとコマンドプロンプトの画面が閉じてしまい、リターンコードを取得できない。
原因
対象のバッチファイルが「exit N(/bなし)」でexitしているため、exitする際に呼び出し元の画面を閉じてしまう。
制約
ソースコードは修正しない。
→「exit /b N」にするとか、「pause」を入れるとかはしない。
対応策
「cmd /k xxxxx.bat 引数」のように、「cmd /k」をつけてバッチ実行することで解決。
「cmd /k」をつけることでバッチ実行後に画面が閉じず、「echo %ERRORLEVEL%」でリターンコードを取得できる。
startコマンドでもいけました。
startコマンドの場合はタイトルを指定する必要があるため、「start "" xxxxx.bat 引数」のように、タイトル、バッチファイル、引数を指定。
![[改訂第3版]Windowsコマンドプロンプトポケットリファレンス[上] (Pocket reference) [改訂第3版]Windowsコマンドプロンプトポケットリファレンス[上] (Pocket reference)](https://m.media-amazon.com/images/I/51rMSs27BXL._SL500_.jpg)
![[改訂第3版]Windowsコマンドプロンプトポケットリファレンス[下] (Pocket reference) [改訂第3版]Windowsコマンドプロンプトポケットリファレンス[下] (Pocket reference)](https://m.media-amazon.com/images/I/51CQkAla6fL._SL500_.jpg)