taskkill - 以特定字符串结尾的窗口标题结束任务

dbz*_*bza 5 windows kill batch ms-dos

我需要编写一个批处理程序来结束所有带有窗口标题的 MS Office 通信器任务(通常以模式 "- Conversation" 结尾。

我试过

taskkill /FI "WINDOWTITLE eq *Conversation" /IM 通信器.exe

但是以“*”开头的通配符模式似乎不起作用。给出以下错误

错误:无法识别搜索过滤器。

任何解决方法的建议将不胜感激!

Sco*_*ott 2

Here\xe2\x80\x99s 是一个批处理文件,部分受到Rogier这个问题的启发:

\n\n
\n

@echo off

\n\n

for /F "delims=" %%a in (\'tasklist /fo list /v\') do (
\n \xc2\xa0 \xc2\xa0 \xc2\xa0 call :Sub %%a
\n )
\n exit /b
\n\xc2\xa0

\n\n

:Sub
\n set Line=%*
\n set BOL4=%Line:~0,4%
\n \ set BOL13=%Line:~0,13%
n \ set Value=%Line:~14%
n if "%BOL4%"=="PID:" (
\ \xc2\xa0 \xc2\xa0 \xc2\xa0 set save_PID=%Value%
n \xc2\xa0 \xc2\xa0 \xc2\xa0 exit /b
\n )
\n \n if "%BOL13%"=="Window Title:" (\xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 //注意 . 以下。
\n \xc2\xa0 \xc2\xa0 \xc2\xa0 echo %Value% | findstr /r /c:"- Conversation.$" > nul
\n \xc2\xa0 \xc2\xa0 \xc2\xa0 if not errorlevel 1 (
\n \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 echo %save_PID%
\n \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 REM taskkill /pid %save_PID%
\n \xc2\xa0 \xc2\xa0 \xc2\xa0 )
\n \xc2\xa0 \xc2\xa0 \xc2\xa0 exit /b
\n )
\n exit /b

\n
\n\n

.我发现我需要在正则表达式的末尾添加一个

\n\n
\n

echo以$结尾的字符串正则表达式| findstr /r

\n
\n\n

\xc2\xa0 I\xe2\x80\x99m 猜测是在字符串echo中添加了一个 CR 或者一个额外的 CRLF ,并且将其计算为字符串和行尾之间出现的字符。findstr

\n\n

显然,您将取消注释掉taskkill您已经测试过的命令。

\n