Windowsバッチファイルの「EXIT」と「GOTO :EOF」の違い

toc目次

はじめに

バッチファイルでスクリプトの実行を途中で終了する場合、「EXIT」または「GOTO :EOF」を使用しますが、「EXIT」と「GOTO :EOF」は動作に違いがあります。

「GOTO :EOF」コマンド

EOFはバッチファイルの最後を表す暗黙のラベルです。

GOTO :EOFコマンドを実行するとバッチファイルの末尾に制御を移すため、スクリプトが終了します。

@echo off

echo テスト1
pause

goto :eof

echo テスト2
pause
テスト1
続行するには何かキーを押してください . . .

上記スクリプトでは「テスト1」を表示した後、EOF(ファイルの末尾)に制御が移動するため「テスト2」は表示せず処理が終了します。

「EXIT」コマンド

EXITコマンドはバッチファイルの処理を明示的に終了します。

@echo off

echo テスト1
pause

exit

echo テスト2
pause
テスト1
続行するには何かキーを押してください . . .

上記スクリプトは「テスト1」を表示した後、EXITコマンドにより処理が終了します。

「EXIT」と「GOTO :EOF」の違い

単体で動作させた場合は両者に違いはありませんが、バッチファイルが他のバッチファイルから呼び出される場合は動作に違いがあります。

GOTO :EOFコマンドを使用したバッチファイルは、他のバッチファイルから呼び出された場合、呼び出し元に制御を戻します。

コマンドプロンプトから起動した場合は、バッチ処理終了後にコマンドプロンプトの操作を続けることが可能です。

C:\> sample_eof.bat
テスト1
続行するには何かキーを押してください . . .

C:\>

EXITコマンドを使用したバッチファイルは、他のバッチファイルから呼び出された場合、呼び出し元に制御を戻すのではなく、実行中のプロセス自体を終了します。

コマンドプロンプトから起動した場合は、コマンドプロンプト(Cmd.exe)が終了します。

C:\> sample_exit.bat
テスト1
続行するには何かキーを押してください . . .