Files
note_book/0_笔记/ai/cli-proxy-api-server.bat
2026-07-09 17:33:53 +08:00

129 lines
3.1 KiB
Batchfile

@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "BASE=%~dp0"
if "%BASE:~-1%"=="\" set "BASE=%BASE:~0,-1%"
set "LOG_DIR=%BASE%\logs"
set "SERVICE_NAME=cli-proxy-api"
set "NSSM=%BASE%\nssm.exe"
set "APP_EXE=%BASE%\cli-proxy-api.exe"
set "CONFIG_FILE=%BASE%\config.yaml"
set "INSTALL_LOG=%LOG_DIR%\install.log"
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
call :log "========== 开始安装/配置服务 =========="
call :log "BASE=%BASE%"
call :log "SERVICE_NAME=%SERVICE_NAME%"
call :log "NSSM=%NSSM%"
if not exist "%NSSM%" (
call :log "错误: 找不到 nssm.exe,路径=%NSSM%"
pause
exit /b 1
)
if not exist "%APP_EXE%" (
call :log "错误: 找不到程序 %APP_EXE%"
pause
exit /b 1
)
if not exist "%CONFIG_FILE%" (
call :log "错误: 找不到配置文件 %CONFIG_FILE%"
pause
exit /b 1
)
sc query "%SERVICE_NAME%" >nul 2>&1
set "SC_ERR=%errorlevel%"
call :log "sc query 返回码=%SC_ERR%"
if "%SC_ERR%"=="0" (
call :log "检测到服务已存在,准备替换"
call :log "尝试停止旧服务"
"%NSSM%" stop "%SERVICE_NAME%" >> "%INSTALL_LOG%" 2>&1
call :log "删除旧服务"
"%NSSM%" remove "%SERVICE_NAME%" confirm >> "%INSTALL_LOG%" 2>&1
if errorlevel 1 (
call :log "错误: 删除旧服务失败"
pause
exit /b 1
)
timeout /t 2 /nobreak >nul
) else if "%SC_ERR%"=="1060" (
call :log "服务不存在,执行全新安装"
) else (
call :log "错误: sc query 检测服务状态失败,返回码=%SC_ERR%"
pause
exit /b 1
)
call :log "安装服务"
"%NSSM%" install "%SERVICE_NAME%" "%APP_EXE%" >> "%INSTALL_LOG%" 2>&1
if errorlevel 1 (
call :log "错误: 安装服务失败"
pause
exit /b 1
)
call :log "设置工作目录"
"%NSSM%" set "%SERVICE_NAME%" AppDirectory "%BASE%" >> "%INSTALL_LOG%" 2>&1
if errorlevel 1 (
call :log "错误: 设置工作目录失败"
pause
exit /b 1
)
call :log "设置启动参数"
"%NSSM%" set "%SERVICE_NAME%" AppParameters "-config ""%CONFIG_FILE%""" >> "%INSTALL_LOG%" 2>&1
if errorlevel 1 (
call :log "错误: 设置启动参数失败"
pause
exit /b 1
)
call :log "设置标准输出日志"
"%NSSM%" set "%SERVICE_NAME%" AppStdout "%LOG_DIR%\out.log" >> "%INSTALL_LOG%" 2>&1
if errorlevel 1 (
call :log "错误: 设置标准输出日志失败"
pause
exit /b 1
)
call :log "设置错误输出日志"
"%NSSM%" set "%SERVICE_NAME%" AppStderr "%LOG_DIR%\err.log" >> "%INSTALL_LOG%" 2>&1
if errorlevel 1 (
call :log "错误: 设置错误输出日志失败"
pause
exit /b 1
)
call :log "设置开机自动启动"
"%NSSM%" set "%SERVICE_NAME%" Start SERVICE_AUTO_START >> "%INSTALL_LOG%" 2>&1
if errorlevel 1 (
call :log "错误: 设置开机自动启动失败"
pause
exit /b 1
)
call :log "启动服务"
"%NSSM%" start "%SERVICE_NAME%" >> "%INSTALL_LOG%" 2>&1
if errorlevel 1 (
call :log "错误: 启动服务命令执行失败"
pause
exit /b 1
)
call :log "========== 服务安装/配置完成 =========="
pause
exit /b 0
:log
echo [%date% %time%] %~1
>> "%INSTALL_LOG%" echo [%date% %time%] %~1
exit /b 0