バッチファイルを終了させるときに記述するコマンドとして「exit」コマンドがあります。
この「exit」コマンドには「/b」というオプションが設定されており、このオプションを付けて使うことが多いです。
本記事ではバッチファイルを終了させるexitコマンドについて紹介したいと思います。
「exit」と「exit /b」の違い
exitコマンドの違いは以下の通りですが、多くの場合「exit /b」で処理を終わらせることが多いです。
- exit(オプション無し):コマンドプロンプトを終了させる
- exit /b:「exit /b」が記述されたバッチファイルを終了させる
以下、サンプルとなるバッチファイルを元に、違いを説明します。
@echo off
call child.bat
echo Finish child.bat
pause
@echo off
echo Execute child.bat
exit
@echo off
echo Execute child.bat
exit /b
parent.batからchild.batを呼び出して実行します。
このときにchild.batの最後の文を「exit」と記述した場合と、「exit \b」と記述した場合について、どのような挙動をするか確認します。
まず、単に「exit」と記述した場合は、その時点でコマンドプロンプトが終了してしまいます。結果、「echo Finish child.bat」が実行されないことに加えて、一瞬でコマンドプロンプトが消えてしまいます。
一方、「exit /b」と記述した場合は、「child.bat」がその時点で終了します。よって、処理は「parent.bat」に戻るので、「echo Finish child.bat」も実行されますし、pauseで処理待ちも発生します。

つまり、callコマンドで子バッチを呼び出し、子バッチの終了を記述する(子バッチを終了して親バッチの処理に戻る)場合には、「exit /b」と記述する必要があります。
バッチファイルや関数に戻り値を与える「exit /b [数値]」
呼び出したバッチファイルや関数からメインのプログラムへ戻るときに、戻り値を設定したい場合には、exit \bの後に数値を指定します。
@echo off
call child.bat
echo %errorlevel%
pause
@echo off
echo Execute child.bat
exit /b 10
上記の例では、戻り値として「10」を指定しています。そして戻り値を参照する方法は、「%errorlevel%」と記述し、errorlevel変数の値を参照することで実現されます。
上記のサンプルプログラムでは「echo %errorlevel%」とすることで、戻り値をコンソールに表示しています。
よって実行すると以下のような結果となります。
