@echo off chcp 65001 >nul color 0C title 清理NPQS9100 MySQL端口占用 cls echo ========================================== echo 清理 NPQS9100 MySQL 端口占用 echo ========================================== echo. REM 获取MySQL目录(脚本所在目录) set MYSQL_HOME=%~dp0 cd /d "%MYSQL_HOME%" REM 读取实际运行的端口 set PORT_FILE=.running-port set MYSQL_PORT= if exist "%PORT_FILE%" ( set /p MYSQL_PORT=<"%PORT_FILE%" echo [√] 检测到运行记录:端口 %MYSQL_PORT% echo. ) else ( echo [!] 未找到运行记录文件,使用默认端口 3306 echo. set MYSQL_PORT=3306 ) echo [1] 检查端口 %MYSQL_PORT% 占用情况... echo. REM 查找占用该端口的连接 netstat -ano | findstr ":%MYSQL_PORT%" > "%TEMP%\mysql_port.txt" if %errorlevel% equ 0 ( echo 发现以下端口 %MYSQL_PORT% 连接: echo ---------------------------------------- type "%TEMP%\mysql_port.txt" echo ---------------------------------------- echo. echo [2] 提取进程ID并结束进程... echo. REM 提取所有LISTENING状态的PID for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%MYSQL_PORT%" ^| findstr "LISTENING"') do ( if not "%%a"=="0" ( echo 正在结束进程 PID: %%a taskkill /F /PID %%a 2>nul if errorlevel 1 ( echo [失败] 无法结束进程 %%a ) else ( echo [成功] 已结束进程 %%a ) ) ) REM 如果还有其他状态的连接,也尝试结束 for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%MYSQL_PORT%" ^| findstr /V "LISTENING"') do ( if not "%%a"=="0" ( echo 正在结束进程 PID: %%a taskkill /F /PID %%a 2>nul if errorlevel 1 ( echo [已结束或无权限] 进程 %%a ) else ( echo [成功] 已结束进程 %%a ) ) ) echo. echo [3] 清理完成 REM 等待2秒让进程完全释放 timeout /t 2 /nobreak >nul echo. echo [4] 再次检查端口 %MYSQL_PORT%... netstat -ano | findstr ":%MYSQL_PORT%" if errorlevel 1 ( echo [√] 端口 %MYSQL_PORT% 已完全释放 REM 删除端口记录文件 if exist "%PORT_FILE%" ( del "%PORT_FILE%" echo [√] 已清理端口记录文件 ) ) else ( echo [!] 仍有连接存在(可能是TIME_WAIT状态,会自动释放) ) ) else ( echo [√] 没有发现占用端口 %MYSQL_PORT% 的进程 REM 删除端口记录文件 if exist "%PORT_FILE%" ( del "%PORT_FILE%" echo [√] 已清理端口记录文件 ) ) REM 清理临时文件 if exist "%TEMP%\mysql_port.txt" del "%TEMP%\mysql_port.txt" echo. echo ========================================== echo 清理完成 echo ========================================== echo. echo 说明: echo - 此脚本只清理 NPQS9100 应用使用的 MySQL 端口 echo - 不会影响您电脑上的其他 MySQL 服务 echo. pause