AnimationManager.bat 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. title Animation Manager
  4. chcp 65001 >nul
  5. REM ================关闭旧的 server.js 进程========================
  6. taskkill /F /IM node.exe >nul 2>&1
  7. REM 等待一下确保进程完全关闭
  8. timeout /t 1 /nobreak >nul 2>&1
  9. REM ================启动 server.js(后台运行)========================
  10. start /B node server/server.js
  11. REM 等待一小段时间,让服务器先输出启动信息
  12. timeout /t 2 /nobreak >nul 2>&1
  13. REM ================检测服务器是否启动成功========================
  14. echo.
  15. echo [批处理脚本] 正在检测服务器状态...
  16. set MAX_ATTEMPTS=30
  17. set ATTEMPT=0
  18. set SERVER_READY=0
  19. :check_server
  20. set /a ATTEMPT+=1
  21. if %ATTEMPT% GTR %MAX_ATTEMPTS% (
  22. echo 错误:服务器启动超时,请检查服务器日志
  23. pause
  24. exit /b 1
  25. )
  26. REM 使用 PowerShell 检测服务器是否响应(兼容性更好)
  27. powershell -NoProfile -Command "try { $response = Invoke-WebRequest -Uri 'http://localhost:3000/' -TimeoutSec 2 -UseBasicParsing -ErrorAction Stop; exit 0 } catch { exit 1 }" >nul 2>&1
  28. if %ERRORLEVEL% EQU 0 (
  29. set SERVER_READY=1
  30. ) else (
  31. REM 如果 PowerShell 方法失败,尝试简单的端口检测
  32. powershell -NoProfile -Command "try { $tcpClient = New-Object System.Net.Sockets.TcpClient; $tcpClient.Connect('localhost', 3000); $tcpClient.Close(); exit 0 } catch { exit 1 }" >nul 2>&1
  33. if %ERRORLEVEL% EQU 0 (
  34. set SERVER_READY=1
  35. )
  36. )
  37. if %SERVER_READY% EQU 0 (
  38. timeout /t 1 /nobreak >nul 2>&1
  39. goto check_server
  40. )
  41. REM ================服务器已启动,打开浏览器========================
  42. echo [批处理脚本] 服务器已启动!
  43. echo.
  44. start http://localhost:3000/index.html?auto=true
  45. echo [批处理脚本] 浏览器将自动打开...
  46. echo.
  47. echo [批处理脚本] 按 Ctrl+C 或关闭此窗口停止服务器
  48. pause >nul
  49. REM 关闭 node 服务
  50. taskkill /F /IM node.exe >nul 2>&1