Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

(Feel free to edit the title if you can think of something better)

Is there a command line utility that kills all processes with a specific command line? E.g. kill all processes named "java.exe" with a command line that contains "-jar selenium-server.jar". This is possible through process explorer.

share|improve this question
I believe both the answers below are wrong, as you arent just asking how to kill a .exe process, you are asking how to kill a .exe process which contains a specific command line – admintech Oct 7 '09 at 10:45
Are you only talking about Windows? Your examples and the supplied answers make it seem like you are, but you didn't specify this. – Nathan Fellman Oct 7 '09 at 10:45
Can you explain "how this is possible through Process Explorer?" I just launched a java - jar<app-name> and it shows only java.exe – Sathya Oct 7 '09 at 12:00
i bet he/she meant "sysinternals process explorer" – akira Oct 7 '09 at 12:35
Sysinternals Process Explorer, of course. You can view much information about running processes from it, including their command line. – ripper234 Oct 7 '09 at 14:22
up vote 20 down vote accepted

In Windows XP, you can do this easyly uing WMIC, the WMI Console. From a command propt, type the following:

wmic Path win32_process Where "CommandLine Like '%-jar selenium-server.jar%'" Call Terminate


I replaced the alias 'process' by it full path ('*path win32_process*') as is Aviator's port. This alias may not be declared on every OS.

share|improve this answer
+20 That's it! Dammit :) I too was following the WMIC. But I was doing it from within the WMIC console and wasn't being able to apply LIKE. Was getting syntax errors, which were forcing me to use '=', which in turn forced me to input the whole CommandLine field. Glad to know LIKE works outside the WMIC console. Should have thought of that. Kudos to you – A Dwarf Oct 7 '09 at 13:04
works perfectly when I call it from command line. I have TeamCity starting a process which I need to kill at the end of the build. Somehow when the same command line called by TeamCity it returns "No Instance(s) Available", the same commad like copied/pasted to cmd kills the process correctly. Any ideas why would that be? – root Jun 6 '14 at 14:00
Just a little tip for cmd files - to use this command from cmd file you should replace escape all '%' chars with a second '%' char, e.g. ... CommandLIne Like '%%-jar ... – sarh Nov 19 '14 at 16:12

If you are using a Windows version which has WMIC command in it. You can try this

wmic path win32_process Where "Caption Like '%java.exe%' AND CommandLine Like '%selenium.jar%'" get ProcessId|more +1

The more +1 removes first line containing the header and prints the PID alone. If there are more than one java process containing selenium.jar then this will return one PID per line.

share|improve this answer

I believe you could do this with PowerShell using Get-Process and the StartInfo.Arguments on the process you want.

$procs = Get-Process java
foreach($proc in $procs) 
    if($proc.StartInfo.Arguments -contains "-jar selenium-server.jar")
        kill $proc

(I haven't tested that completely, but you should be able to tweak it to make it work)

share|improve this answer


$oProcs = get-process explorer;foreach ($oProc in $oProcs){if ($oProc.Path.Contains('C:\Windows')) {Stop-Process $oProc.Id}}
share|improve this answer

I use a variation of Brain's PowerShell script.

This outputs command line and other info as well.

$processes = Get-WmiObject Win32_Process -Filter "name = 'java.exe'"
foreach($proc in $processes)
        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))..."
share|improve this answer


pskill java.exe

share|improve this answer
you missed the 2nd part of the question: "specific commandline"... not the first java.exe, that comes along .. neither all java.exe processes – akira Oct 7 '09 at 11:33

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .