Чи є утиліта командного рядка, яка вбиває всі процеси за допомогою певного командного рядка?
Наприклад, знищити всі процеси з назвою "java.exe" командним рядком, що містить "-jar selenium-server.jar". Це можливо за допомогою провідника процесів.
Чи є утиліта командного рядка, яка вбиває всі процеси за допомогою певного командного рядка?
Наприклад, знищити всі процеси з назвою "java.exe" командним рядком, що містить "-jar selenium-server.jar". Це можливо за допомогою провідника процесів.
Відповіді:
У Windows XP ви можете це легко виконати, використовуючи WMIC, консоль WMI . У командному рядку введіть таке:
wmic Path win32_process Where "CommandLine Like '%-jar selenium-server.jar%'" Call Terminate
Редагувати:
Я замінив псевдонім ' process ' на його повний шлях (' path win32_process '), як і порт Aviator. Цей псевдонім може бути оголошений не в усіх ОС.
Якщо ви використовуєте версію Windows, в якій є команда WMIC. Ви можете спробувати це
wmic path win32_process Where "Caption Like '%java.exe%' AND CommandLine Like '%selenium.jar%'" get ProcessId|more +1
more +1
Видаляє перший рядок , що містить заголовок і друкує PID в поодинці. Якщо існує більше одного Java-процесу, що містить selenium.jar, це поверне один PID на рядок.
Я вважаю, що ви могли б зробити це за допомогою PowerShell за допомогою Get-Process та StartInfo.Аргументи на потрібному процесі.
$procs = Get-Process java
foreach($proc in $procs)
{
if($proc.StartInfo.Arguments -contains "-jar selenium-server.jar")
{
kill $proc
}
}
(Я не перевіряв це повністю, але ви повинні мати змогу налаштувати його, щоб він працював)
Powershell: -
$oProcs = get-process explorer;foreach ($oProc in $oProcs){if ($oProc.Path.Contains('C:\Windows')) {Stop-Process $oProc.Id}}
Я використовую варіацію сценарію PowerShell Brain .
Це також видає командний рядок та іншу інформацію.
$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))..."
}
}
Ще одна варіація оболонки. Це в основному те саме, можливо простіше набрати та запам'ятати. -match може насправді приймати регулярний вираз.
get-wmiobject win32_process | where commandline -match selenium-server.jar
| remove-wmiobject