当我运行jps -lv
时,我得到了
4748 org.apache.abc.runtime.common.abc -XX:PermSize = 128m -XX:MaxPermSize = 128m -Xmx512m -ea -Dproc_abc 11140 sun.tools.jps.Jps -Dapplication.home = C:\ Program Files \ Java \ jdk1.7.0_79 -Xms8m
我需要使用windows batch命令来杀死abc。
在linux中,
taskkill /f /pid $(jps -lv | grep abc | awk '{print $1}')
这可行,但在Windows中,我无法找到如何操作。
请帮帮我。
答案 0 :(得分:3)
您可以像这样批量试用:
@echo off
for /f "delims= " %%a in ('jps -lv ^| find /i "common"') do set PID=%%a
taskkill /f /PID %PID%
pause
或者这样:
@echo off
for /f "tokens=1" %%A in ('jps -lv ^| find "common"') do (taskkill /F /PID %%A)
pause
答案 1 :(得分:1)
从SysInternals看一下pskill
。
Usage: pskill [-t] [\\computer [-u username [-p password]]] -t Kill the process and its descendants. -u Specifies optional user name for login to remote computer. -p Specifies optional password for user name. If you omit this you will be prompted to enter a hidden password.
但是对于Windows中更现代的方法,使用PowerShell和WMI会更好。
EG。要在命令行上使用“default”终止FireFox进程,我可以使用:
(gwmi win32_process -filter 'name = "firefox.exe" and commandline like "%default%"').Handle | % { stop-process $_ }
gwmi
是Get-WmiObject
的缩写,Win32_Process
对象使用其Handle
属性来保存进程ID。 %
是ForEach-Object
的别名,并执行传递的脚本块。 $_
是传递给管道的当前对象,