web-dev-qa-db-ja.com

コマンドプロンプトウィンドウを閉じずにエラーコードを返す方法

いくつかのファイルを検証するバッチファイルを作成しています。ファイルの1つが無効な場合、バッチスクリプトを停止して、エラーコード> 0を返します。以下のコードはうまく機能しているようですが、「EXIT 2」を呼び出すと、スクリプトが実行されていたコマンドプロンプトウィンドウが閉じます。

:Validate
SETLOCAL
Validator %1
IF %ERRORLEVEL% GEQ 1 EXIT 2
ENDLOCAL

コマンドプロンプトを閉じずにエラーコードを返す方法に関するアイデアはありますか?

17
Martin

コマンドプロンプトコマンドのヘルプを取得するには、/?オプション。 Exit /?は以下を示します。

CMD.EXEプログラム(コマンドインタープリター)または現在のバッチスクリプトを終了します。

EXIT [/ B] [exitCode]

/ Bは、CMD.EXEではなく、現在のバッチスクリプトを終了することを指定します。バッチスクリプトの外部から実行された場合、CMD.EXEを終了します。

exitCodeは数値を指定します。/Bが指定されている場合、ERRORLEVELをその数に設定します。 CMD.EXEを終了する場合、その番号でプロセス終了コードを設定します。

あなたが望んでいるのは

IF %ERRORLEVEL% GEQ 1 EXIT /B 2
45
Hans Passant

Exitを呼び出す前にpauseコマンドを使用できます。

メッセージが気に入らない場合:

pause > nul
1