如何在Visual Studio的预构建步骤中终止可能不存在的进程?

17

问题是如果这个进程不存在,构建就会失败。我试图写出像这样的东西

tasklist /nh /fi "imagename eq XDesProc.exe" | find /i "XDesProc.exe" && (
TASKKILL /F /IM "XDesProc.exe"
) || (
echo XAML designer is not running
)

但是ERRORLEVEL也等于1,如果XDesProc.exe没有运行,则构建失败。

1个回答

37

您可以使用 PID 的条件测试来避免这种情况:

  taskkill /f /fi "pid gt 0" /im xdesproc.exe

我很感激这篇文章,因为它也帮助了我。我想确保我正确理解正在发生的事情,所以澄清一下,这是指强制终止所有进程ID大于0且名称为xdesproc.exe的进程吗?在这种情况下,我不清楚筛选器的语法,后续筛选器是否由空格分隔?谢谢。 - TargetofGravity
进一步阐述,抱歉我错过了编辑评论的时间,“taskkill /?”示例似乎表明每个筛选器都由自己的“/fi”前缀定义。如果是这样,那么试图杀死xdesproc.exe是否仍会发生,如果在返回的筛选列表中没有找到,它是否会失败,因为未找到该进程? - TargetofGravity

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接