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

Luk*_*Luk 39 windows visual-studio-2008 tasks

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

taskkill /f /im w3wp.exe
Run Code Online (Sandbox Code Playgroud)

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

Error 1 The process "w3wp.exe" not found. xxx\EXEC
Run Code Online (Sandbox Code Playgroud)

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

Mok*_*bai 30

不是运行一个命令,而是运行一个小的批处理文件吗?

tasklist /FI "IMAGENAME eq w3wp.exe" 2>NUL | find /I /N "w3wp.exe">NUL
if "%ERRORLEVEL%"=="0" taskkill /f /im w3wp.exe
Run Code Online (Sandbox Code Playgroud)


Dus*_*ter 26

我找到的解决方案是运行

START /wait taskkill /f /im w3wp.exe
Run Code Online (Sandbox Code Playgroud)

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

  • 如果您想在继续批处理文件之前等待任务被终止。只需添加:`START /wait taskkill /f /im w3wp.exe` (5认同)

小智 16

这也很好用:

taskkill /IM "w3wp.exe" /F /FI "STATUS eq RUNNING"
Run Code Online (Sandbox Code Playgroud)


小智 11

或者,如果未找到,这将只返回一条信息消息:

taskkill /f /im w3wp.exe /fi "memusage gt 2"
Run Code Online (Sandbox Code Playgroud)

信息来自:这里


小智 5

这是一种单行解决方案

只有当进程真正运行时它才会运行 taskkill 否则它只会显示它没有运行。

tasklist | find /i "w3wp.exe" && taskkill /im w3wp.exe /F || echo process "w3wp.exe" not running.
Run Code Online (Sandbox Code Playgroud)

这是进程运行时的输出:

w3wp.exe           1960 Services                   0    112,260 K
SUCCESS: The process "w3wp.exe" with PID 1960 has been terminated.
Run Code Online (Sandbox Code Playgroud)

这是不运行时的输出:

process "w3wp.exe" not running.
Run Code Online (Sandbox Code Playgroud)


小智 5

对于视觉工作室中的预构建事件,这对我有用:

taskkill /f /im scriptcode.exe 2>nul 1>nul
exit 0
Run Code Online (Sandbox Code Playgroud)

请参阅:/sf/ask/406451111/

我在状态=运行检查时遇到一些问题,进程存在但没有状态=运行。我以前用过那个。