バッチファイル内でコマンドかどうかを確認する方法
start "" javaw -jar %~p0/example.jar
成功したか、エラーが発生しましたか?
if/else ステートメントを使用して、この情報をエコーアウトしたいと考えています。
バッチファイル内でコマンドかどうかを確認する方法
start "" javaw -jar %~p0/example.jar
成功したか、エラーが発生しましたか?
if/else ステートメントを使用して、この情報をエコーアウトしたいと考えています。
新しいウィンドウが起動するため、これはおそらく機能しませんstart
が、質問に答えるには:
コマンドがエラー レベルを返した場合は、次の方法で確認できます。
特定のエラーレベル別
commandhere
if %errorlevel%==131 echo do something
エラーが発生した場合
commandhere || echo what to do if error level ISN'T 0
エラーなしの場合
commandhere && echo what to do if error level IS 0
エラーレベルを返さないが出力を与える場合は、変数でそれをキャッチし、出力によって判断できます。例 (トークンと delim は単なる例であり、特殊文字で失敗する可能性があることに注意してください)
完全な出力を解析することによって
for /f "tokens=* delims=" %%a in ('somecommand') do set output=%%a
if %output%==whateveritwouldsayinerror echo error
または、エラーという単語のような出力で単一のフレーズを探すこともできます
文字列をチェックすることによって
commandhere | find "Error" || echo There was no error!
commandhere | find "Error" && echo There was an error!
そして、一緒に混ぜることもできます(ステートメント|
で^|
if でエスケープすることを忘れないでください)for
お役に立てれば。
使用できます
if errorlevel 1 echo Unsuccessful
ある場合には。これは、適切な終了コードを返す最後のコマンドに依存します。異常があったとしても、プログラムが正常に戻った場合は、異常があるとは言えません。
より微妙なアプローチを必要とする Robocopy のようなプログラムには注意してください。返されるエラー レベルは単なるブール情報以上のものを含むビットマスクであり、実際の成功コードは AFAIK, 3 です。
ほとんどのコマンド/プログラムは、成功すると 0 を返し、errorlevel
エラーを通知するために と呼ばれるその他の値を返します。
たとえば、次のようにして、バッチでこれを確認できます。
call <THE_COMMAND_HERE>
if %ERRORLEVEL% == 0 goto :next
echo "Errors encountered during execution. Exited with status: %errorlevel%"
goto :endofscript
:next
echo "Doing the next thing"
:endofscript
echo "Script complete"
javaw が %errorlevel% 変数に書き込むかどうかはわかりませんが、可能性はあります。
echo %errorlevel%
直接実行して確認してください。
それ以外に、 javaw の出力をファイルにパイプしてから、 を使用find
して結果を確認できます。その出力を知らなければ、私は本当にあなたを助けることはできません.