มีโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่ฆ่ากระบวนการทั้งหมดด้วยบรรทัดคำสั่งเฉพาะหรือไม่
เช่นฆ่ากระบวนการทั้งหมดที่ชื่อ "java.exe" ด้วยบรรทัดคำสั่งที่มี "-jar selenium-server.jar" สิ่งนี้เป็นไปได้ผ่านกระบวนการสำรวจ
มีโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่ฆ่ากระบวนการทั้งหมดด้วยบรรทัดคำสั่งเฉพาะหรือไม่
เช่นฆ่ากระบวนการทั้งหมดที่ชื่อ "java.exe" ด้วยบรรทัดคำสั่งที่มี "-jar selenium-server.jar" สิ่งนี้เป็นไปได้ผ่านกระบวนการสำรวจ
คำตอบ:
ใน Windows XP คุณสามารถทำได้อย่างง่ายดายด้วย uing WMIC นั่นคือคอนโซลWMI จากพรอมต์คำสั่งพิมพ์ต่อไปนี้:
wmic Path win32_process Where "CommandLine Like '%-jar selenium-server.jar%'" Call Terminate
แก้ไข:
ฉันแทนที่ ' กระบวนการ ' ชื่อแทนโดยเส้นทางแบบเต็ม (' เส้นทาง win32_process ') เนื่องจากเป็นพอร์ตของนักบิน นามแฝงนี้อาจไม่ถูกประกาศในทุกระบบปฏิบัติการ
หากคุณใช้เวอร์ชั่น Windows ซึ่งมีคำสั่ง WMIC อยู่ คุณสามารถลองสิ่งนี้
wmic path win32_process Where "Caption Like '%java.exe%' AND CommandLine Like '%selenium.jar%'" get ProcessId|more +1
more +1
เอาบรรทัดแรกที่มีส่วนหัวและพิมพ์หมายเลขผลิตภัณฑ์เพียงอย่างเดียว หากมีกระบวนการจาวามากกว่าหนึ่งกระบวนการที่มี selenium.jar สิ่งนี้จะส่งคืน PID หนึ่งรายการต่อบรรทัด
ฉันเชื่อว่าคุณสามารถทำได้ด้วย PowerShell โดยใช้ Get-Process และ StartInfo.Arguments เกี่ยวกับกระบวนการที่คุณต้องการ
$procs = Get-Process java
foreach($proc in $procs)
{
if($proc.StartInfo.Arguments -contains "-jar selenium-server.jar")
{
kill $proc
}
}
(ฉันยังไม่ได้ทดสอบอย่างสมบูรณ์ แต่คุณควรปรับแต่งเพื่อให้มันใช้งานได้)
ง่าย ๆ หนึ่งซับใน PowerShell:
(Get-WmiObject win32_process -filter "Name='java.exe' AND CommandLine LIKE '%-jar selenium-server.jar%'").Terminate()
Powershell: -
$oProcs = get-process explorer;foreach ($oProc in $oProcs){if ($oProc.Path.Contains('C:\Windows')) {Stop-Process $oProc.Id}}
ฉันจะใช้รูปแบบของสคริปต์ PowerShell สมอง
เอาต์พุตบรรทัดคำสั่งนี้และข้อมูลอื่น ๆ เช่นกัน
$processes = Get-WmiObject Win32_Process -Filter "name = 'java.exe'"
foreach($proc in $processes)
{
if($proc.CommandLine.Contains("selenium-server.jar"))
{
Write-Host "stopping proccess $($proc.ProcessId) with $($proc.ThreadCount) threads; $($proc.CommandLine.Substring(0, 50))..."
Stop-Process -F $proc.ProcessId
} else
{
Write-Host "skipping proccess $($proc.ProcessId) with $($proc.ThreadCount) threads; $($proc.CommandLine.Substring(0, 50))..."
}
}
การเปลี่ยนแปลงที่แตกต่างกันอื่น โดยทั่วไปแล้วอาจจะพิมพ์และจดจำได้ง่ายกว่า - การจับคู่สามารถใช้การแสดงออกปกติ
get-wmiobject win32_process | where commandline -match selenium-server.jar
| remove-wmiobject