exit - プログラムを終了する
exitコマンドとは
exitコマンドは、コマンドプロンプト(cmd.exe)、またはバッチファイルの処理を終了するコマンドです。終了時には、終了コードを指定することもできます。
このページでは、exitコマンドの基本的な使い方から、/bオプションの有無による挙動の違い、終了コードの扱いまでをサンプルコード付きで説明します。
exitコマンドの使い方
exit [/b] [<終了コード>]
| オプション | 説明 |
|---|---|
/b | cmd.exeを終了せず、exitコマンドを実行したバッチファイル(またはサブルーチン)の処理のみを終了します。 |
<終了コード> | 終了コードを数値で指定します。省略した場合の扱いは、後述の「終了コードの指定」を参照してください。 |
オプションなしのexit
オプションを指定せずに実行すると、cmd.exe自体が終了します。コマンドプロンプトのウィンドウは閉じられます。
バッチファイルの中で実行した場合も同様で、callやstart /waitで呼び出された先のバッチファイルであっても、呼び出し元を含めてcmd.exeごと終了します。
@echo off
setlocal
call callee.cmd
rem 以下のコマンドは実行されない
pause
endlocal
@echo off
setlocal
exit
endlocal
上記の 2 つを用意した上で、以下のコマンドを実行します。

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超 入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
callee.cmdのexitによってcmd.exeが終了するため、caller.cmdのpauseは実行されず、コマンドプロンプトのウィンドウも閉じます。
/bオプション
/bオプションを指定すると、cmd.exeは終了せず、exit /bを実行したバッチファイルの処理だけが終了し、呼び出し元に制御が戻ります。
callee.cmdを以下のように書き換えます。caller.cmdは変更しません。
@echo off
setlocal
exit /b
endlocal
呼び出し元のcaller.cmdは続行されるため、pauseコマンドが実行されます。
バッチファイルの外(コマンドプロンプトに直接入力した場合)でexit /bを実行すると、cmd.exeが終了します。
終了コードの指定
<終了コード>には、数値で終了コードを指定します。
/bあり: 指定した値が%errorlevel%に設定され、呼び出し元のバッチファイルから参照できます。exit /bのように数値を省略した場合は、その時点の%errorlevel%が維持されます。/bなし: 指定した値がcmd.exeプロセスの終了コードになります。cmd /cで呼び出した場合など、呼び出し元のプログラムから取得できます。
caller.cmdとcallee.cmdを以下のように書き換えます。
@echo off
setlocal
call callee.cmd
echo 終了コードに%errorlevel%が指定されました
pause
endlocal
@echo off
setlocal
exit /b 100
endlocal
上記のコマンドが実行されると、以下のように出力されます。
終了コードは、if errorlevelや%errorlevel%による分岐に使えます。詳しくは以下のページを参照してください。