Windows:杀死在特定端口上运行的进程的最快方法

Modified on: Fri, 07 Dec 2018 03:20:02 +0800

我多次经历这个过程。我必须杀死Windows机器上的进程,我才知道它的端口。
通常步骤如下:通过查看端口查找PID(示例端口8084)列出端口上运行的进程

netstat -a -o -n

然后使用以下命令终止该端口上的进程

taskkill /F /PID <pid>

在Windows操作系统上是否可以使用管道或类似设备在一行中运行此命令!

作者:Armand

最佳答案

  

在Windows操作系统中是否可以使用管道或类似设备在一行中运行此命令?

cmd.exe和PowerShell都支持从一个命令到另一个命令的管道。在PowerShell中有类似的东西(这应该在命令行上的一行,或者使用`来转义脚本中的换行符):

netstat -ano
 | select -skip 4 
 | % {$a = $_ -split ' {3,}'; New-Object 'PSObject' -Property @{Original=$_;Fields=$a}} 
 | ? {$_.Fields[1] -match '15120$'}
 | % {taskkill /F /PID $_.Fields[4] }

其中:

  • Select -skip 4会跳过前四个标题行。 (SelectSelect-Object的缩写,用于执行SQL SELECT,如对象项目。
  • %Foreach-Object的缩写,它对管道中的每个对象($_)执行脚本块并输出结果脚本块到管道。这里首先将输入分解为一个字段数组,然后创建一个带有两个属性Original的新对象,该字符串来自netstatFields刚刚创建的数组。
  • ?Where-Object的缩写,它根据脚本块的结果进行过滤。这里匹配第二个字段末尾的正则表达式(所有PowerShell容器都基于零)。

(所有测试除了最后一个元素:我不想开始杀死进程: - ))。

在实践中,我会简化这一点,例如。在调用foreach之前,只返回0或来自第一个taskkill的PID(设计用于忽略标题)并过滤值不为零。如果不知道PowerShell就可以更快地输入,但更难以遵循。


相关问答

添加新评论