通过从.BAT中查找进程使用的端口来终止进程

2024-04-26 10:15:31 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

要在命令行中查找特定进程,请使用下面的命令8080是进程使用的端口

netstat -ano | findstr 8080

要终止进程,在这里使用下面的命令21424是进程id

taskkill /pid 21424 /F 

这里有一个命令让您开始:

FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO @ECHO TaskKill.exe /PID %%P

当您对批处理文件有信心时,请删除@ECHO

FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO TaskKill.exe /PID %%P

请注意,您可能需要针对不同的操作系统稍微更改此设置。例如,在Windows 7上,您可能需要tokens=5,而不是tokens=4

这是如何工作的

FOR /F ... %variable IN ('command') DO otherCommand %variable...

这允许您执行command,并循环其输出。每一行将被填充到%variable,并可以在otherCommand中扩展到您喜欢的任何位置。^实际使用中的{}只能有一个字母名,例如%V

"tokens=4 delims= "

这使您可以用空白分隔每一行,并将该行中的第4个块填充到%variable(在我们的例子中是%%P)。delims看起来是空的,但是额外的空间实际上是重要的。

netstat -a -n -o

快去查一查。根据命令行帮助,它“显示所有连接和侦听端口。”,“以数字形式显示地址和端口号。”,以及“显示与每个连接关联的所属进程ID。”。我只是使用了这些选项,因为有人建议了它,而且它碰巧起了作用:)

^|

这接受第一个命令或程序(netstat)的输出,并将其传递到第二个命令程序(findstr)。如果您直接在命令行上使用它,而不是在命令字符串中使用它,那么您将使用|而不是^|

findstr :8080

这将过滤传递给它的任何输出,只返回包含:8080的行。

TaskKill.exe /PID <value>

这将使用进程ID终止正在运行的任务

%%P instead of %P

批处理文件中需要这样做。如果在命令提示符下执行此操作,则将使用%P

打开命令提示符并运行以下命令

 C:\Users\username>netstat -o -n -a | findstr 0.0:3000
   TCP    0.0.0.0:3000      0.0.0.0:0              LISTENING       3116

C:\Users\username>taskkill /F /PID 3116

,这里3116是进程ID

相关问题 更多 >