@echo off chcp 65001 >nul title Noval - 小说创作应用 :: 先关闭已有的 Noval 进程 tasklist /FI "WINDOWTITLE eq Noval-Backend*" 2>nul | find /I "cmd.exe" >nul if not errorlevel 1 ( echo [*] 检测到已运行的后端,正在关闭... taskkill /FI "WINDOWTITLE eq Noval-Backend*" /F >nul 2>&1 ) tasklist /FI "WINDOWTITLE eq Noval-Frontend*" 2>nul | find /I "cmd.exe" >nul if not errorlevel 1 ( echo [*] 检测到已运行的前端,正在关闭... taskkill /FI "WINDOWTITLE eq Noval-Frontend*" /F >nul 2>&1 ) :: 清理可能残留的占用 8000 端口的进程 for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":8000.*LISTENING"') do ( taskkill /PID %%a /F >nul 2>&1 ) timeout /t 1 /nobreak >nul echo ======================================== echo Noval 启动中... echo ======================================== echo. :: 检查后端虚拟环境 if not exist "backend\.venv\Scripts\uvicorn.exe" ( echo [!] 未检测到后端虚拟环境,正在初始化... cd backend py -3 -m venv .venv .venv\Scripts\pip install -r requirements.txt cd .. echo. ) :: 检查前端依赖 if not exist "frontend\node_modules" ( echo [!] 未检测到前端依赖,正在安装... cd frontend call npm install cd .. echo. ) echo [1/2] 启动后端 (port 8000)... start "Noval-Backend" cmd /c "cd backend && .venv\Scripts\uvicorn app.main:app --port 8000 --reload" echo [2/2] 启动前端 (port 5173)... start "Noval-Frontend" cmd /c "cd frontend && npm run dev" :: 等待服务就绪后打开浏览器 timeout /t 3 /nobreak >nul start http://localhost:5173 echo. echo ======================================== echo Noval 已启动! echo 前端: http://localhost:5173 echo 后端: http://localhost:8000/docs echo ======================================== echo 再次运行此脚本会自动重启所有服务 echo 后端已启用 --reload,修改代码自动生效 echo ======================================== pause