在windows中使用管道和taskkill使用pid杀死进程



我是批处理脚本的新手,尝试搜索并终止进程列表,不知道如何在第二个管道之后继续进行

@echo off
wmic process where "Name like 'java%%.exe' " get Processid, Caption, Commandline | find "abc" |

在这里,我使用WMIC列出所有java进程,并使用find过滤它们,以在命令行中获得带有特定单词的java进程,现在我需要在找到这些进程后杀死它们。这可以通过taskkill或在将其写入文件后使用for循环来实现吗?我不想使用调用Terminate来终止进程。有人能帮我做这个吗。提前谢谢。

这首先根据.exe名称查找进程,然后在学习进程id后查看这些进程的命令行:

@echo off
setlocal ENABLEEXTENSIONS DISABLEDELAYEDEXPANSION
set exe=winver.exe
set findcommand=foo bar
REM start example programs
start "" "%exe%" %findcommand%
start "" "%exe%" %findcommand% baz
ping -n 3 localhost>nul&rem SLEEP
for /F "tokens=2 delims==" %%A in ('wmic process where "Name like '%exe%'" get ProcessID /format:list') do for /F "tokens=1,* delims==" %%B in ('wmic process where "ProcessID like '%%A'" get commandLine /format:list') do for /F %%D in ("%%~B") do (
(echo.%%C|find /I "%findcommand%" >nul)&&call taskkill /PID %%A
)

如果命令行包含echo不喜欢的内容,但批处理文件就是这样,我相信有办法打破这种局面。。。

最新更新