Files
yidaima_tools/bat/run_server.bat

100 lines
2.2 KiB
Batchfile
Raw Normal View History

2026-04-10 14:37:23 +08:00
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
:: 强制切换到脚本所在目录解决管理员模式启动默认在System32的问题
cd /d "%~dp0"
echo 正确盘符: %~d0
echo 正确路径: %cd%
:: 使用/d参数强制切换驱动器+目录
cd /d "D:\code\server" 2>nul
if %errorlevel% neq 0 (
echo [ERROR] Can not enter D:\code\server
echo 请检查:
echo 1. D盘是否存在
echo 2. code目录是否存在
echo 3. 是否有权限访问
exit /b
)
echo 扫描子目录中...
dir /ad /b
set "first_dir="
for /f "delims=" %%d in ('dir /ad /b 2^>nul') do (
set "first_dir=%%d"
goto :dir_found
)
:dir_found
if not defined first_dir (
echo [ERROR] No subdirectory found
exit /b
)
echo 进入子目录: !first_dir!
cd /d "!first_dir!"
echo 当前路径: %cd%
if not exist "target\" (
echo 执行Maven构建...
call mvn clean package
) else (
echo 检测到 target 目录跳过Maven构建。
)
echo 进入target目录...
cd target
echo 目录内容:
dir /b
:: ========== 新增端口检查功能 ==========
echo 正在检查8080端口占用...
set "port_pid="
for /f "tokens=5" %%p in ('netstat -ano -p tcp ^| findstr ":8080" ^| findstr "LISTENING"') do (
set "port_pid=%%p"
echo 检测到端口占用PID: !port_pid!
taskkill /F /PID !port_pid! >nul 2>&1 && (
echo 成功终止进程: !port_pid!
) || (
echo [警告] 无法终止进程: !port_pid!
echo 可能需要管理员权限,请右键用管理员身份运行
)
)
if not defined port_pid (
echo 8080端口未被占用
)
:: ========== 端口检查结束 ==========
set "jar_file="
for /f "delims=" %%j in ('dir /b /a-d *.jar ^| findstr /v "original.jar"') do (
set "jar_file=%%j"
goto :jar_found
)
:jar_found
if not defined jar_file (
echo [ERROR] No valid jar found
echo 建议检查:
echo 1. Maven构建是否成功
echo 2. target目录内容
dir /b *.jar
exit /b
)
echo 启动Jar包: !jar_file!
java -jar "!jar_file!"
if %errorlevel% neq 0 (
echo [ERROR] Java启动失败 (code: %errorlevel%)
echo 可能原因:
echo 1. 缺少依赖
echo 2. 端口占用
echo 3. 配置错误
pause
)