【问题标题】:How to query netstat to find PID for specific local address in Windows 7?如何在 Windows 7 中查询 netstat 以查找特定本地地址的 PID?
【发布时间】:2014-07-09 10:28:46
【问题描述】:
我经常在本地地址[::]:8080 上启动服务器。要终止服务器,我需要从netstat -aon 获取PID。
要终止此服务器,我会执行 taskkill /F /PID <found pid>
我想创建可以找到 PID 并在调用taskkill /F /PID <found pid> 中应用它的 Windows 批处理文件
如何创建这样的批处理文件?
谢谢!
【问题讨论】:
标签:
windows
batch-file
netstat
【解决方案1】:
在我的电脑上可能有 UDP 或 TCP 连接,它们需要的代码略有不同:
对此进行测试以查看其中一个 taskkill 命令是否正确,然后删除 echo 以启用 taskkill 命令。
@echo off
for /f "tokens=5" %%a in ('netstat -aon ^|find " [::]:8080 " ^|find /i " TCP " ') do echo taskkill /F /PID %%a
for /f "tokens=4" %%a in ('netstat -aon ^|find " [::]:8080 " ^|find /i " UDP " ') do echo taskkill /F /PID %%a
【解决方案2】:
@echo off
setlocal enableextensions
set "port=8080"
for /f "tokens=1,4,5" %%a in (
'netstat -aon ^| findstr /r /c:"[TU][CD]P[^[]*\[::\]:%port%"'
) do if "%%a"=="UDP" (taskkill /F /PID %%b) else (taskkill /f /PID %%c)
endlocal
使用findstr 仅检索所需的记录,使用for 命令对其进行标记以获取PID 列(UDP 为第4,TCP 为第5)并终止任务