如果 Notepad.exe 正在运行,则 taskkill 如果未运行,则转到下一条语句

Posted

技术标签:

【中文标题】如果 Notepad.exe 正在运行,则 taskkill 如果未运行,则转到下一条语句【英文标题】:If Notepad.exe is running then taskkill if not running go to next statement 【发布时间】:2013-03-31 22:53:37 【问题描述】:

我需要帮助编写批处理代码。

在我的批处理脚本的初始状态中,我需要检查 notepad.exe 是否正在运行 如果它正在运行,则 taskkill /im notepad.exe elsif notepad.exe 没有运行然后转到下一个批处理语句/代码。

【问题讨论】:

【参考方案1】:

在所有情况下,您都可以简单地执行taskkill /im notepad.exe。如果它没有运行,那么taskill 将没有什么可杀的,只会返回。

这种情况下taskkill会报错并设置错误级别。您可以通过重定向标准错误来禁止报告错误:

taskkill /im notepad.exe 2> nul

至于错误级别,您可以忽略它,它将被您执行的下一个命令清除。或者如果需要,您可以clear it yourself。

在我看来,这种方法比试图预测taskkill 是否会成功要好。您将无法预测所有可能的故障模式,并且由于 taskkill 本身会执行您所询问的检查,我认为您最好将该检查留给 taskkill

【讨论】:

可能提问者正在寻找 taskkill /im notepad.exe ||退出 /b 不会报错吗?如果是,它可能不会执行下一条语句? 报错。我展示了如何抑制它。但它会继续执行下一条语句。请记住,这是我们正在谈论的批处理,而不是真正的编程语言! ;-) @joojaa 从 cmets 来看,情况似乎并非如此 谢谢你,当你说真正的编程语言时,我让我感到困惑。【参考方案2】:

试试taskkill /fi "IMAGENAME eq notepad.exe" 找不到notepad.exe只会抛出信息而不是错误。

【讨论】:

+1 这很好。避免需要重置错误级别。但是,您的最后陈述具有误导性。错误不会停止执行。执行只是在面对错误时插入。

以上是关于如果 Notepad.exe 正在运行,则 taskkill 如果未运行,则转到下一条语句的主要内容,如果未能解决你的问题,请参考以下文章

在后台运行浏览器

upx压缩notepad.exe(运行时压缩)

有notepad注册表但是运行不了

notepad++运行怎么添加

找到notepad.exe和mspaint.exe的路径

window2008 r2系统怎么清除notepad.exe病毒