33

notepad.exeプロセスが存在するかどうかを確認するバッチ プログラムが必要です。

存在する場合 notepad.exeは、プロセスを終了します。

そうしないと、バッチ プログラムは自動的に終了します。

これが私がやったことです:

@echo off
tasklist /fi "imagename eq notepad.exe" > nul
if errorlevel 1 taskkill /f /im "notepad.exe"
exit

しかし、うまくいきません。私のコードで間違っているのは何ですか?

4

5 に答える 5

59

TASKLISTエラーレベルを設定しません。

echo off
tasklist /fi "imagename eq notepad.exe" |find ":" > nul
if errorlevel 1 taskkill /f /im "notepad.exe"
exit

「:」はTASKLISTタスクが見つからない場合にのみ出力に表示されるため、エラーレベルをforおよびforFINDに設定するため、ジョブを実行する必要があります。0not found1found

それにもかかわらず、

taskkill /f /im "メモ帳.exe"

存在する場合はメモ帳タスクを強制終了します-メモ帳タスクが存在しない場合は何もできないため、実際にテストする必要はありません-他にやりたいことがない限り...おそらく

echo off
tasklist /fi "imagename eq notepad.exe" |find ":" > nul
if errorlevel 1 taskkill /f /im "notepad.exe"&exit

あなたが尋ねるように見えるでしょう-メモ帳プロセスが存在する場合は強制終了し、終了します-そうでない場合はバッチを続行します

于 2013-03-16T12:38:07.617 に答える
25

これは1 行のソリューションです。

プロセスが実際に実行されている場合にのみ taskkill が実行されます。それ以外の場合は、実行されていないことが通知されます。

tasklist | find /i "notepad.exe" && taskkill /im notepad.exe /F || echo process "notepad.exe" not running.

これは、プロセスが実行されていた場合の出力です。

notepad.exe           1960 Console                   0    112,260 K
SUCCESS: The process "notepad.exe" with PID 1960 has been terminated.

これは、実行されていない場合の出力です。

process "notepad.exe" not running.
于 2016-06-27T08:56:54.263 に答える
10

TASKLISTバッチ ファイルでチェックできる終了コードを設定しません。終了コードをチェックする 1 つの回避策は、標準出力 (現在リダイレクトしているNUL) を解析することです。どうやら、プロセスが見つかった場合、TASKLIST画像名も含めてその詳細が表示されます。したがって、または を使用して、リクエストで指定した名前が の出力に含まれているかどうFINDFINDSTRを確認できます。検索が失敗した場合は、null 以外の終了コードを設定しTASKLISTますFINDFINDSTRしたがって、これは機能します:

@echo off
tasklist /fi "imagename eq notepad.exe" | find /i "notepad.exe" > nul
if not errorlevel 1 (taskkill /f /im "notepad.exe") else (
  specific commands to perform if the process was not found
)
exit

まったく関与しない代替手段もありTASKLISTます。とは異なりTASKLISTTASKKILL終了コードを設定します。特に、単にプロセスが存在しないためにプロセスを終了できなかった場合、終了コード 128 が設定されます。指定されたプロセスが実行された場合に実行する必要がある特定のアクションを実行するために、そのコードを確認できます。存在しませんでした:

@echo off
taskkill /f /im "notepad.exe" > nul
if errorlevel 128 (
  specific commands to perform if the process
  was not terminated because it was not found
)
exit
于 2013-03-16T12:38:48.393 に答える