Files
ylt_diy/服务管理.bat

124 lines
3.0 KiB
Batchfile
Raw Normal View History

2026-07-21 15:37:36 +08:00
@echo off
chcp 65001 >nul
title 订单日报系统 - Windows服务管理
cd /d "%~dp0"
REM ============================================
REM 使用 NSSM 将程序注册为 Windows 服务
REM 需要先下载 nssm.exe 放到当前目录
REM 下载地址: https://nssm.cc/download
REM ============================================
set SERVICE_NAME=DailyReportSystem
set SERVICE_DESC=订单日报系统服务
set NSSM_EXE=nssm.exe
if not exist "%NSSM_EXE%" (
echo [错误] 未找到 %NSSM_EXE%
echo.
echo 请先下载 NSSM:
echo 1. 访问 https://nssm.cc/download
echo 2. 下载 Win64 版本
echo 3. 解压后将 nssm.exe 放到当前目录
echo.
pause
exit /b 1
)
REM 检查虚拟环境
if exist ".venv\Scripts\python.exe" (
set PYTHON_PATH=%cd%\.venv\Scripts\python.exe
) else (
for /f "delims=" %%i in ('where python') do (
set PYTHON_PATH=%%i
goto :found_python
)
:found_python
)
echo ========================================
echo 订单日报系统 - Windows服务管理
echo ========================================
echo.
echo 服务名称: %SERVICE_NAME%
echo Python路径: %PYTHON_PATH%
echo 工作目录: %cd%
echo.
echo 请选择操作:
echo 1. 安装服务
echo 2. 启动服务
echo 3. 停止服务
echo 4. 重启服务
echo 5. 删除服务
echo 6. 查看服务状态
echo 0. 退出
echo.
set /p choice=请输入选项:
if "%choice%"=="1" goto install
if "%choice%"=="2" goto start
if "%choice%"=="3" goto stop
if "%choice%"=="4" goto restart
if "%choice%"=="5" goto remove
if "%choice%"=="6" goto status
if "%choice%"=="0" goto end
:install
echo.
echo [信息] 正在安装服务...
%NSSM_EXE% install %SERVICE_NAME% "%PYTHON_PATH%" "%cd%\run_prod.py"
%NSSM_EXE% set %SERVICE_NAME% AppDirectory "%cd%"
%NSSM_EXE% set %SERVICE_NAME% DisplayName "%SERVICE_DESC%"
%NSSM_EXE% set %SERVICE_NAME% Description "订单日报系统 - 自动生成充电订单日报报表"
%NSSM_EXE% set %SERVICE_NAME% Start SERVICE_AUTO_START
%NSSM_EXE% set %SERVICE_NAME% AppStdout "%cd%\logs\service_stdout.log"
%NSSM_EXE% set %SERVICE_NAME% AppStderr "%cd%\logs\service_stderr.log"
%NSSM_EXE% set %SERVICE_NAME% AppRotateFiles 1
%NSSM_EXE% set %SERVICE_NAME% AppRotateOnline 1
%NSSM_EXE% set %SERVICE_NAME% AppRotateBytes 10485760
echo [信息] 服务安装完成!
goto end
:start
echo.
echo [信息] 正在启动服务...
net start %SERVICE_NAME%
goto end
:stop
echo.
echo [信息] 正在停止服务...
net stop %SERVICE_NAME%
goto end
:restart
echo.
echo [信息] 正在重启服务...
net stop %SERVICE_NAME%
timeout /t 3 /nobreak >nul
net start %SERVICE_NAME%
goto end
:remove
echo.
echo [警告] 即将删除服务 %SERVICE_NAME%
set /p confirm=确认删除吗?(y/n):
if /i not "%confirm%"=="y" goto end
echo [信息] 正在停止服务...
net stop %SERVICE_NAME% 2>nul
echo [信息] 正在删除服务...
%NSSM_EXE% remove %SERVICE_NAME% confirm
echo [信息] 服务已删除!
goto end
:status
echo.
echo [信息] 服务状态:
sc query %SERVICE_NAME%
goto end
:end
echo.
pause