如何在 windows 中终止后台进程并保留前台进程 运行

How to kill a background process in windows and keep foreground process running

正如标题所说,我想杀死某个程序的所有后台进程,但在windows(Server 2016)上保留运行前台程序。所有进程都使用相同的 .exe,因此将它们分开的唯一方法是检查它们是否在后台 运行。 使用任务列表我可以看到不同之处:

Abbildname                     PID Sitzungsname       Sitz.-Nr. Speichernutzung
========================= ======== ================ =========== ===============
BpNexT.exe                    6900 Services                   0       254.936 K
BpNexT.exe                    6164 Console                    1        63.912 K
BpNexT.exe                    6377 Services                   0       251.234 K

必须终止第一个和最后一个进程,第二个进程应保留 运行。 我尝试按服务过滤,但失败了:

taskkill /IM BPNEXT.EXE /FI "services eq Services" /T /F

如何终止所需的进程?

延斯

FOR /f "tokens=*" %%G IN ('tasklist ^| findstr /I BPNEXT.EXE ^| findstr Services') DO (
    set /a counter=1
    FOR %%H IN (%%G) DO (
        if !counter! == 2 (
            taskkill /F /PID %%H
        )
    set /a counter=!counter!+1
    )
)