【发布时间】:2012-07-29 13:43:31
【问题描述】:
操作系统:Windows XP、Windows 7 64 位。
我们有一些相当庞大的 cmd 脚本用于一些日常构建过程。这些脚本产生了许多其他(窗口)进程。有一个控制 cmd 脚本,一个小的简单脚本,它启动主 cmd 脚本。小控制脚本的目的是在主脚本或其任何子脚本失败的情况下进行清理。这很容易完成:主脚本及其所有子脚本都有以唯一标识符开头的窗口标题。当控制脚本确定主脚本及其所有子脚本应该已完成时,它使用任务列表查找任何挂起的进程的窗口,通过:
tasklist.exe /FI "WINDOWTITLE eq UniqueIdentifier*"
这一切在 XP 中运行良好。现在进入Windows7 64位。在这里,如果主 .cmd 脚本或任何其他 .cmd shell 窗口尝试通过
title UniqueIdentifier Followed By Descriptive Text
Windows7 64 位在标题前添加其他文本(特别是“管理员:”或类似内容)。不能依赖前面的文本。所以现在我们要使用
tasklist.exe /FI "WINDOWTITLE eq *UniqueIdentifier*"
但失败并显示错误消息“无法识别搜索过滤器”。使用我们的 UniqueIdentifier 作为后缀是行不通的:命令
tasklist.exe /FI "WINDOWTITLE eq *UniqueIdentifier"
也会导致相同的错误消息。似乎微软在过滤器中的“通配符”概念并没有超出将“*”作为终端字符的范围。哎哟。
有人有解决办法吗? Pslist 似乎不允许使用窗口标题进行过滤。
【问题讨论】:
标签: filter cmd windows-7 windows-8 tasklist