批量TASKLIST到变量

时间:2017-09-18 11:13:47

标签: batch-file store taskkill tasklist

我想找一个应用程序是否打开并获得它的PID。为此,我用了,

wmic process where name="notepad.exe" get ProcessId

如果有两个,notepad.exe打开,则显示2个PID。如果2打开,我想taskkill一个。我该如何做到这一点。如何检查是否一次打开两个相同的命名进程(具有特定名称)?有没有办法将tasklist存储在列表中?

1 个答案:

答案 0 :(得分:1)

我认为这就是你想要的:

@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET /A I=0
SET PIDS=
FOR /F "tokens=*" %%G IN ('wmic process where name^="notepad.exe" get ProcessId ^| FINDSTR /v ProcessId ^| FINDSTR /r /v "^$"') DO (
    SET /A I=I+1
    SET PIDS=!PIDS!%%G,
    SET PIDS=!PIDS: =!
)
SET PIDS=!PIDS:~1,-1!
ECHO Found %I% processes
ECHO PIDs: %PIDS%

它将输出进程计数和PID作为逗号分隔列表。如果我针对chrome.exe运行它,那么这是输出:

C:\tmp>q46277950.bat
Found 12 processes
PIDs: 1696,5668,11644,4240,1624,4284,15076,15236,2816,11388,5652,5840