在命令行中终止进程树的进程 (Windows)

发布于 2024-10-31 14:16:05 字数 135 浏览 4 评论 0原文

我需要一个命令来终止进程树的进程。

例如 notepad.exe 是由资源管理器创建的。如何终止 explorer.exe 进程树中的 notepad.exe

I am in need of a command that will allow me to terminate a process of a process tree.

For example notepad.exe was created by explorer. How would I terminate the notepad.exe in the explorer.exe process tree ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

风流物 2024-11-07 14:16:05

这个答案并不完全适合这种情况,但对于寻找如何杀死整个进程树的人们来说可能很有用。我们需要在这里组合一些答案以获得正确的结果:杀死进程树并强制它。

taskkill /IM“<进程名称>” /T /F

对于某些进程,您需要在具有管理员权限的控制台应用程序中运行命令。

This answer is not exactly for this case, but it can be useful for people looking how to kill the whole process tree. We need to combine some answers here to get the proper result: kill the process tree and force it.

taskkill /IM "<process-name>" /T /F

For some processes you need to run the command in a console application with administrator rights.

巴黎夜雨 2024-11-07 14:16:05

使用taskkill /IM/T。

Use taskkill /IM <processname.exe> /T.

花海 2024-11-07 14:16:05

现在,您可以使用 PowerShell 来完成此操作:

$cimProcesses = Get-CimInstance -Query "select ProcessId, ParentProcessId from Win32_Process where Name = 'notepad.exe'"
$processes = $cimProcesses | Where-Object { (Get-Process -Id $_.ParentProcessId).ProcessName -eq "explorer" } | ForEach-Object { Get-Process -Id $_.ProcessId }

$processes.Kill()

或者以优雅的方式:

$cimProcesses = Get-CimInstance -Query "select ProcessId, ParentProcessId from Win32_Process where Name = 'notepad.exe'"
$cimProcesses = $cimProcesses | Where-Object { (Get-Process -Id $_.ParentProcessId).ProcessName -eq "explorer" }

$cimProcesses | ForEach-Object { taskkill /pid $_.ProcessId }

Nowadays, you can do this with PowerShell:

$cimProcesses = Get-CimInstance -Query "select ProcessId, ParentProcessId from Win32_Process where Name = 'notepad.exe'"
$processes = $cimProcesses | Where-Object { (Get-Process -Id $_.ParentProcessId).ProcessName -eq "explorer" } | ForEach-Object { Get-Process -Id $_.ProcessId }

$processes.Kill()

Or the graceful way:

$cimProcesses = Get-CimInstance -Query "select ProcessId, ParentProcessId from Win32_Process where Name = 'notepad.exe'"
$cimProcesses = $cimProcesses | Where-Object { (Get-Process -Id $_.ParentProcessId).ProcessName -eq "explorer" }

$cimProcesses | ForEach-Object { taskkill /pid $_.ProcessId }
几度春秋 2024-11-07 14:16:05

尝试使用 PsTools 集 中的 PsKill + PsList 实用程序。

pslist -t 将为您提供一个进程树(在这里您可以找到 notepad.exe,它是 explorer.exe 的子进程。然后您可以使用 pskill 来终止指定 id 的进程。

Try PsKill + PsList utilities from the PsTools set.

pslist -t will give you a process tree (here you can find notepad.exe which is a child process of the explorer.exe. Then you can use pskill to kill the process with specified id.

奢欲 2024-11-07 14:16:05
taskkill /F /IM notepad.exe

这将杀死所有 notepad.exe - 如果您想要一种方法来指定仅杀死由 foo.exe 创建的 notepad.exe 左右,我认为 Windows 命令行对此还不够强大。

您可以使用 tasklist 获取要定位的进程的进程 ID,然后使用 taskkill /F /PID 终止它。

taskkill /F /IM notepad.exe

This would kill all notepad.exe's -- if you want a way to specify to only kill notepad.exe's which were created by foo.exe or so, I do not think Windows command lines are powerful enough for this.

You might can use tasklist to get the process ID of the process you want to target and then use taskkill /F /PID <PID> to kill it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文