用于解决Windows端口占用的批处理脚本,自动查找指定端口号对应的进程并结束该进程。
使用方法:右键新建一个
文本文档.txt
,将以下代码复制粘贴到文本并保存,然后把.txt
改成.bat
,双击运行并输入需要结束的端口号
@echo off
chcp 65001 > nul
set /p port=请输入要查找并结束进程的端口号:
set "found=0"
for /f "tokens=5" %%a in ('netstat -ano ^| findstr %port%') do (
set "found=1"
echo 发现端口号为 %port% 的进程,PID 为 %%a,正在结束...
taskkill /F /PID %%a
)
if %found% EQU 0 (
echo 没有发现端口号为 %port% 的进程。
) else (
echo 结束进程操作完成。
)
pause
代码解析
@echo off
: 这行命令用于关闭命令提示符窗口中的命令回显功能,这样在执行脚本时不会显示每条命令的执行结果。
chcp 65001 > nul
: 这行命令设置命令提示符窗口的字符编码为 UTF-8,避免出现乱码,并将输出重定向到 nul,即不显示输出内容。
set /p port=请输入要查找并结束进程的端口号:
: 这行命令用于接收用户输入的端口号。
set "found=0"
: 初始化一个变量 found,用于标记是否找到指定端口对应的进程,初始值为 0。
for /f "tokens=5" %%a in ('netstat -ano ^| findstr %port%') do (...)
: 这是一个 for 循环,用于遍历通过 netstat 命令查找到的与指定端口相关的进程信息。tokens=5
表示将每行输出按空格分割后的第 5 个部分赋值给变量 %%a
。
set "found=1"
: 在找到匹配的进程后,将 found 的值设为 1。
echo 发现端口号为 %port% 的进程,PID 为 %%a,正在结束...
: 显示找到的进程信息和对应的 PID。
taskkill /F /PID %%a
: 使用 taskkill 命令结束指定 PID 的进程。
if %found% EQU 0 (...) else (...)
: 根据 found 的值来判断是否找到了指定端口对应的进程,然后输出相应的信息。
pause
: 脚本执行完毕后暂停,等待用户按任意键继续。
执行效果
-
没有指定的端口号进程的情况
-
有对应的端口号进程的情况