当前位置: 首页 > article >正文

Windows 使用批处理脚本快速释放被占用的端口


在前端开发中,我们经常会遇到端口占用的问题。特别是在开发环境中,如果开发工具意外关闭或者崩溃,往往会导致端口未正确释放,使我们无法再次使用同一个端口。
想要释放一个端口,我们需要先用命令查找端口占用的进程

netstat -ano|findstr 端口号

然后再用命令终止进程。

taskkill /PID 进程id /F

这些命令都不太常用而且不好记,要释放多个端口号更是麻烦。

为了解决这个问题,我用批处理脚本语言编写了一个脚本,用于快速查找并释放指定端口。


什么是 Windows 批处理脚本?

Windows 批处理脚本,也称 Batch ScriptBatch File,是一种基于命令行的脚本语言,用于 Windows 操作系统中自动化执行一系列命令。批处理脚本文件的扩展名为 .bat.cmd,可以在命令提示符(CMD)中直接运行。

批处理脚本有以下主要特点:

  • 流程控制:通过使用 ifforgoto 等语句,可以控制脚本的执行流程。
  • 系统命令调用:可以执行 Windows 内置命令,如 netstat(查看网络连接)、taskkill(终止进程)等。
  • 环境变量:可以使用 set 命令来设置或读取环境变量,灵活控制脚本的参数和执行。
  • 自动化任务:批处理脚本主要用于自动化系统管理任务,例如文件操作、进程管理和网络任务。

在日常开发工作中,批处理脚本非常适合完成一些简单而重复的系统操作。


使用批处理脚本释放被占用的端口

1. 脚本实现

首先,我们需要一个可以快速查找并释放指定端口的脚本。这个脚本会询问用户输入的端口号,查找占用该端口的进程 ID,并自动终止该进程。

以下是完整的脚本代码(用中文可能会有编码乱码的问题,所以下面都用英文了):

@echo off
setlocal

:START
:: Prompt the user to enter a port number or type 'exit' to quit
set /p PORT=Enter the port number to free (or type 'exit' to quit):

:: Check if the user wants to exit
if /i "%PORT%"=="exit" (
    echo Exiting script.
    goto :END
)

:: Initialize PID variable
set "PID="

:: Find the process occupying the port
for /f "tokens=5" %%i in ('netstat -ano ^| findstr :%PORT%') do (
    set "PID=%%i"
)

:: Check if PID was found
if defined PID (
    echo Port %PORT% is occupied by process %PID%
    
    :: Kill the process
    taskkill /PID %PID% /F
    echo Process %PID% occupying port %PORT% has been terminated
) else (
    echo No process found occupying port %PORT%
)

:: Loop back to prompt for another port number
goto :START

:END
endlocal
pause
2. 脚本分解和功能说明

这个脚本的设计非常简单,但功能强大,能够帮助我们方便地释放端口。以下是关键步骤的解释:

  1. 循环输入端口号

    • 通过 :START 标签和 goto :START 语句实现循环,允许用户连续输入多个端口号。
    • 用户可以通过输入 exit 命令退出循环,结束脚本运行。
  2. 检查端口占用的进程

    • 使用 netstat -ano | findstr :%PORT% 来查找占用指定端口的进程,并将其进程 ID 保存到变量 PID 中。
    • for /f "tokens=5" %%i in (...) do (set "PID=%%i") 中的 tokens=5 是为了提取 netstat 命令输出中第 5 列的进程 ID(在某些情况下,PID 可能位于不同位置,具体取决于命令输出格式)。
  3. 终止进程

    • 检查 PID 是否为空。若不为空,则说明找到了占用端口的进程。
    • 使用 taskkill /PID %PID% /F 强制终止该进程,从而释放端口。
  4. 错误处理

    • 如果没有找到占用指定端口的进程,则脚本会输出提示信息 No process found occupying port %PORT%
    • 这种处理方式可以避免因端口未被占用而导致的错误。

如何运行脚本

  1. 保存脚本:将上面的代码保存为 killport.bat
    在这里插入图片描述

  2. 运行脚本:双击运行 killport.bat 文件,按照提示输入端口号,脚本会自动查找并终止占用该端口的进程。

    原来需要启动8092端口,但是8092-8095的端口都被占用了,导致程序启动推到了8096端口
    在这里插入图片描述

    打开bat脚本,输入要释放的端口号
    在这里插入图片描述

    8092端口成功被释放,程序正常启动
    在这里插入图片描述

  3. 退出脚本:在输入端口号时输入 exit 即可退出脚本。


http://www.kler.cn/a/388070.html

相关文章:

  • Spring框架之观察者模式 (Observer Pattern)
  • 冗余连接2 hard题 代随C#写法
  • 【机器学习】机器学习中用到的高等数学知识-2.概率论与统计 (Probability and Statistics)
  • 【C#设计模式(8)——过滤器模式(Adapter Pattern)】
  • 24/11/12 算法笔记<强化学习> Policy Gradient策略梯度
  • 生成模型——PixelRNN与PixelCNN
  • 深度学习:预训练(Pre-training详解
  • 【如何在 Linux 和 Android 系统中杀死进程】
  • 【模型学习之路】手写+分析GAT
  • 前端 Flex 布局语法详解
  • Python接口自动化测试自学指南(项目实战)
  • 海外云手机在出海业务中的优势有哪些?
  • Elasticsearch实战使用
  • u盘怎么重装电脑系统_u盘重装电脑系统步骤和详细教程【新手宝典】
  • Hive中查看字段中是否包含某些字符串的函数
  • Git 入门篇(三)
  • 发布 VectorTraits v3.0(支持 X86架构的Avx512系列指令集,支持 Wasm架构及PackedSimd指令集等)
  • 从0开始深度学习(24)——填充和步幅
  • 通过 SSH 连接远程 Ubuntu 服务器
  • 24下半年教资面试资源(幼儿+小学+初中+高中+各科)逐字稿
  • Redis集群——针对实习面试
  • JDK8主要特性
  • React 中 `key` 属性的警告及其解决方案
  • C++设计模式精选面试题及参考答案
  • 如何找到系统中bert-base-uncased默认安装位置
  • 数据结构和算法-贪心算法01- 认识贪心