如何在Windows系统中查找监听TCP或UDP端口的进程?
使用PowerShell... ...这将成为您的好帮手(将8080替换为您的端口号):
netstat -abno | Select-String -Context 0,1 -Pattern 8080
示例输出
> TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 2920
[tnslsnr.exe]
> TCP [::]:8080 [::]:0 LISTENING 2920
[tnslsnr.exe]
对于 Windows 操作系统,如果要查找正在监听或连接到端口 1234 的进程,可以在命令提示符中执行以下命令:
netstat -na | find "1234"
根据info和kill的答案,对我来说将它们结合在一个命令中是有用的。你可以从cmd中运行此命令以获取有关监听给定端口(例如8080)的进程信息:
for /f "tokens=3 delims=LISTENING" %i in ('netstat -ano ^| findStr "8080" ^| findStr "["') do @tasklist /nh /fi "pid eq %i"
或者如果你想杀掉它:
for /f "tokens=3 delims=LISTENING" %i in ('netstat -ano ^| findStr "8080" ^| findStr "["') do @Taskkill /F /IM %i
您还可以将这些命令放入批处理文件中(它们会略有不同-用%%i
替换%i
):
portInfo.bat
for /f "tokens=3 delims=LISTENING" %%i in (
'netstat -ano ^| findStr "%1" ^| findStr "["'
) do @tasklist /nh /fi "pid eq %%i"
portKill.bat
for /f "tokens=3 delims=LISTENING" %%i in (
'netstat -ano ^| findStr "%1" ^| findStr "["'
) do @Taskkill /F /IM %%i
然后你可以在命令提示符中执行以下操作:
portInfo.bat 8080
或者
portKill.bat 8080
.\portInfo.bat 800
会得到类似于以下内容:`C:\work>for /F "tokens=3 delims=LISTENING" %i in ('netstat -ano | findStr "800" | findStr "["') do (tasklist /fi "pid eq %i" )C:\work>(tasklist /fi "pid eq 4" )映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
System 4 Services 0 1,820 K` - lczapskiportInfo.bat
的文件中,然后执行了.\portInfo.bat 8080
。输出只是批处理文件的内容。很可能我忽略了某些东西。请注意,我正在Windows 10上使用PowerShell 6.2.3。我还尝试在常规命令提示符中运行它,但结果相同:输出脚本内容。我确定我缺少关键信息以使其正常工作。 - Manfredfor /f "tokens=3 delims=LISTENING" %i in ('netstat -ano ^| findStr "8080" ^| findStr "["') do tasklist /fi "pid eq %i"
- lczapski/nh
: @tasklist /nh /fi "pid eq %i"
?并且要精确查找:**Findstr ":8080"
**。 - Io-oI使用以下批处理脚本,将进程名称作为参数,并提供该进程的netstat
输出。
@echo off
set procName=%1
for /f "tokens=2 delims=," %%F in ('tasklist /nh /fi "imagename eq %1" /fo csv') do call :Foo %%~F
goto End
:Foo
set z=%1
echo netstat for : "%procName%" which had pid "%1"
echo ----------------------------------------------------------------------
netstat -ano |findstr %z%
goto :eof
:End
netstat -aof | findstr :8080
。 - David Jesus