2013-04-09 6 views
6

私はバッチコードを書くのに助けが必要です。私はそれがnotepad.exe ELSIF、その後
taskkill /im notepad.exeを実行している場合notepad.exeは を実行しているかどうかを確認する必要がNotepad.exeが実行されていて、タスクが実行されていない場合は次の文に移動します

私のバッチスクリプトの初期状態では

は、次のバッチのステートメント/コードに行く、その後実行されていません。

答えて

10

すべての場合にtaskkill /im notepad.exeを実行するだけです。それが実行されていない場合、taskillは殺すことが何もないと、ちょうど戻ってきます。

この場合、taskkillはエラーを報告し、エラーレベルを設定します。あなたは、標準エラーをリダイレクトすることによって、エラーの報告を抑制することができます。

エラーレベルについては
taskkill /im notepad.exe 2> nul 

、あなたはちょうどそれを無視することができ、それはあなたが実行し、次のコマンドによってクリアされます。必要に応じて、clear it yourselfとすることもできます。

このアプローチは、私の考えでは、taskkillが成功するかどうかを予測しようとするよりも優れています。すべての可能性のある障害モードを予測することはできません。また、taskkill自体があなたが尋ねているチェックを実行しているので、そのチェックをtaskkillに任せることもできます。

+0

質問者が探していた可能性があります** taskkill/im notepad.exe || exit/b ** – joojaa

+0

エラーが発生しませんか?それは次の文を実行しないかもしれませんか? – Mowgli

+0

エラーを報告します。そして私はそれを抑える方法を示します。しかし、それは次の声明を実行し続けます。これは、私たちが話しているバッチであり、実際のプログラミング言語ではないことを忘れないでください! ;-) –

6

お試しくださいtaskkill /fi "IMAGENAME eq notepad.exe" notepad.exeが見つからない場合は、エラーではなく情報のみが表示されます。

+0

+1いいですね。エラーレベルをリセットする必要はありません。しかし、あなたの最終的な声明は誤解を招きます。エラーは実行を停止しません。実行はエラーに直面してプラグインするだけです。 –

+0

修正済み、ありがとうございました! – tomdemuyt