次のように 3 つの別々の Java ウィンドウを起動する bat があります。
start java -jar somejar.jar
start java -jar _the_jar_I_want_to_close_.jar
start java -jar someotherjar.jar
閉じるためのbatコマンドが必要ですのみ_the_jar_I_want_to_close_.jar。残念ながら、これらのウィンドウを区別するのは PID だけですが、PID は起動されるたびに変わります。
私が試してみたことは次のとおりです
PID による Taskkill
taskkill /PID ####
問題:PIDは一定ではありません。Javaからすべてのプロセスを強制終了する
taskkill /IM java.exe
問題:停止したくないJavaウィンドウが他に2つありますイメージ名ですべてのプロセスを強制終了します:
taskkill /IM java
問題:上記と同じですが、3 つのウィンドウすべてではなく、1 つのウィンドウのみを終了する必要があります。
可能性は?
- 起動時にウィンドウに名前を付けて、後でその名前を参照できるようにすることは可能ですか?
答え1
なぜ使わないのかstart "title 4 kills"
start "java 1" java -jar somejar.jar
start "java 2" java -jar _the_jar_I_want_to_close_.jar
start "java 3" java -jar someotherjar.jar
taskkill /F /FI "WindowTitle eq "java 2"
答え2
これには 2 つの手順が必要です。
PIDを見つける(このスレッドから取得)https://serverfault.com/questions/126502/windows でコマンドプロンプトから独自のプロセス PID を取得する方法:
for /f "tokens=2 USEBACKQ" %f IN (`tasklist /NH /FI "WINDOWTITLE eq _the_jar_I_want_to_close_*"`) Do set ourPID=%f
PID でプロセスを強制終了します。
taskkill /F /PID %ourPID%