为什么我不能在TASKLIST / FI" WINDOWTITLE"中使用通配符。功能/过滤器?

时间:2012-02-06 20:21:21

标签: batch-file window title tasklist

第一篇文章。

我正在编写一个批处理文件来检查打开的窗口的窗口标题,如果它们与我想要的不匹配则关闭它们并重新打开它们。 (主要原因是如果“无法加载页面”,则自动重启浏览器。)

我的问题在于......

tasklist /FI "WINDOWTITLE eq Kingdoms of Camelot on Facebook - Mozilla Firefox"2>NUL | find /I /N "firefox.exe"2>NUL
    if "%ERRORLEVEL%"=="0" goto runningfire
    if "%ERRORLEVEL%"=="1" goto notrunningfire

这会检查打开的窗口并将其标题与Facebook上的“卡梅洛王国 - Mozilla Firefox”进行比较。这非常有用,直到开始!

对我来说,主要的烦恼是每当你收到facebook通知/朋友请求/消息时,它会将标题栏更改为(1)Kingdoms .....然后脚本无效。

我花了很多时间,主要是因为我非常喜欢这个,而且我对批处理文件和脚本知之甚少。

所以我的问题是......

是否可以有效地将通配符添加到标题要求的开头...(注意标题前面的*)

tasklist /FI "WINDOWTITLE eq *Kingdoms of Camelot on Facebook - Mozilla Firefox"2>NUL | find /I /N "firefox.exe"2>NUL | find /I "[6]"2>NUL
    if "%ERRORLEVEL%"=="0" goto runningfire
    if "%ERRORLEVEL%"=="1" goto notrunningfire

这是显而易见的解决方案,但它根本不起作用,返回ERROR:无法识别搜索过滤器。

我也试过3 ???代表(1)和(2)等,但他们也不会工作......

有什么想法吗?请把它瞄准一个完整而彻底的菜鸟。

2 个答案:

答案 0 :(得分:2)

你为什么不试试

tasklist /fi "imagename eq firefox.exe" /v | find /i "Kingdoms of Camelot on Facebook - Mozilla Firefox" 2>NUL
if ....

我使用相同的方法来获取具有相同窗口标题前缀的进程的pid,并且它可以正常工作。

PS:从我测试的tasklist命令开始,它无法识别通配符语法

答案 1 :(得分:-1)

这很有效。要在批处理文件中使用它,请添加插入符号(^):

tasklist /fi "imagename eq firefox.exe" /v ^| find /i "Kingdoms of Camelot on Facebook - Mozilla Firefox" 2>NUL