我正在启动很多.bat,在其中执行,例如:
title Waterfall-Proxy
我这样做是为了在想要关闭它们时更容易关闭正确的命令。要关闭它们,我使用:
taskkill /IM cmd.exe /FI “WINDOWTITLE eq Waterfall-Proxy”
但是,这找不到任何具有正确标题的命令。当我使用 tasklist 时,也没有这样的标题的命令。
这是什么原因造成的?
答案1
错误在于多个过滤器全部执行,而不是合并为一个过滤器。这意味着你的taskkill
命令将终止全部 cmd.exe
。
未经测试的改编 关联 Ramhound 在上面的评论中给出的是:
for /f "tokens=2 delims=," %%a in ('
tasklist /fi "imagename eq cmd.exe" /v /fo:csv /nh
^| findstr /c:"Waterfall-Proxy"
') do taskkill /pid %%a
答案2
for /f usebackq^tokens^=4delims^=^>^< %i in =;(` 2^>nul %__AppDir__%wbem\wmic.exe process where "caption='java.exe' and CommandLine Like '%waterfall-1.20-552.jar%'" get processid /format:xml ^| find "VALUE" `);= do %__AppDir__%taskkill.exe /f /pid %~i
:: or...
for /f usebackq^tokens^=4delims^=^>^< %i in =;(` 2^>nul %__AppDir__%wbem\wmic.exe process where "caption='cmd.exe' and CommandLine Like '%start_proxy.bat%'" get processid /format:xml ^| find "VALUE" `);= do %__AppDir__%taskkill.exe /f /pid %~i
@echo off
for /f usebackq^tokens^=4delims^=^>^< %%i in =;(`
%__AppDir__%wbem\wmic.exe process where "caption='java.exe' and CommandLine Like '%%waterfall-1.20-552.jar%%'" get processid /format:xml ^| find "VALUE"
`);= do %__AppDir__%taskkill.exe /f /pid %%~i
:: or...
for /f usebackq^tokens^=4delims^=^>^< %%i in =;(`
2^>nul %__AppDir__%wbem\wmic.exe process where "caption='cmd.exe' and CommandLine Like '%%start_proxy.bat%%'" get processid /format:xml ^| find "VALUE"
`);= do %__AppDir__%taskkill.exe /f /pid %%~i
假设它指的是瀑布 1.20,尽管这是一个.jar
,因此我建议寻找它的PID在一个Java过程中,Name.jar
存在于中execution/command line
,并通过点击,使用相应/相关的PID number