我正在运行 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.