2013-02-16 10 views
12

私はいくつかのファイルを検証するバッチファイルを書いています。ファイルの1つが有効でない場合は、バッチスクリプトを停止して、エラーコード> 0を返します。以下のコードは仕事をしているようですが、 "EXIT 2"を呼び出すと、スクリプトが実行されていたコマンドプロンプトウィンドウが閉じます。コマンドプロンプトウィンドウを閉じずにエラーコードを返す方法はありますか?

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

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

+0

何かを返すには、完了する必要があります... – vonbrand

答えて

32

は自分の/を使うのか?オプション。 Exit /?示す:

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

EXIT [/ B] [EXITCODE]

/Bは、代わり CMD.EXEの現在のバッチスクリプトを終了するように指定します。バッチスクリプトの外部から実行すると、 はCMD.EXEを終了します。

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

ですから、

IF %ERRORLEVEL% GEQ 1 EXIT /B 2 
1

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

メッセージを好まない場合は、次のコマンドプロンプトコマンドのヘルプを表示するには

pause > nul 
+0

私はちょうど今、私はEnterを押して、ウィンドウが閉じなければならない... – Martin

+1

これは何ですか? –

+0

私はウィンドウをまったく閉じたくありません。コマンドプロンプトに戻るだけです。 – Martin

-2

をしたいが、同じ問題を得ました。バッチを書く場合(Windowsシェルスクリプト)。 'cmd'はあなたのためにそれを行う必要があります。これはバッチを終了せずにコマンドプロンプトに残ります。 私の問題を解決しました。 の場合: cd "\view\Flex Builder 3\gcc-mvn" set path="c:\view\jdk1.7.0_02\bin";"c:\view\apache-maven-3.0.5\bin";%path% mvn sonar:sonar cmd は実行後にプロンプ​​トが表示されます。

+2

mvnはバッチファイルなので、この一連のコマンドは最後に終了します。単に実行するのではなく、mvnを呼び出す必要があります。他のバッチファイルを呼び出すときにCALLを使用しないと、呼び出したバッチファイルからは決して戻りません。呼び出されたバッチファイルは引き継ぎ、元のファイルは実行されなくなります。 また、ファイルの最後にあるCMD呼び出しは、実際には新しいコマンドプロセッサを開いているため、1つではなく2つのコマンドプロセッサが実行されます。 – David

関連する問題