Taskkill.exe:如果进程未运行,则不要抛出错误

Taskkill.exe:如果进程未运行,则不要抛出错误

我正在运行 Visual Studio 后期构建事件,如果 IIS 在编译后仍在运行,它将关闭它:

taskkill /f /im w3wp.exe

如果 IIS 仍在运行,则以下操作可以完美运行,但如果 IIS 已停止,则会引发错误:

Error 1 The process "w3wp.exe" not found. xxx\EXEC

如果无法找到匹配的正在运行的进程,有没有办法告诉 taskkill 忽略该问题?

答案1

除了运行一个命令之外,运行一个小的批处理文件是否可以?

tasklist /FI "IMAGENAME eq w3wp.exe" 2>NUL | find /I /N "w3wp.exe">NUL
if "%ERRORLEVEL%"=="0" taskkill /f /im w3wp.exe

答案2

我发现的解决方案是运行

START /wait taskkill /f /im w3wp.exe

它从 START 命令返回成功,并且 TASKKILL 引发的任何错误都将抛出到新的控制台窗口中

答案3

这也很好用:

taskkill /IM "w3wp.exe" /F /FI "STATUS eq RUNNING"

答案4

这是一个一行解决方案

仅当进程确实正在运行时它才会运行 taskkill,否则它只会提供进程未运行的信息。

tasklist | find /i "w3wp.exe" && taskkill /im w3wp.exe /F || echo process "w3wp.exe" not running.

这是进程运行时的输出:

w3wp.exe           1960 Services                   0    112,260 K
SUCCESS: The process "w3wp.exe" with PID 1960 has been terminated.

这是不运行时的输出:

process "w3wp.exe" not running.

相关内容