128 lines
3.2 KiB
Batchfile
128 lines
3.2 KiB
Batchfile
@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 检查虚拟环境
|
||
set "PYTHON_PATH="
|
||
if exist ".venv\Scripts\python.exe" (
|
||
set "PYTHON_PATH=%cd%\.venv\Scripts\python.exe"
|
||
) else (
|
||
for /f "delims=" %%i in ('where python 2^>nul') do (
|
||
if not defined PYTHON_PATH set "PYTHON_PATH=%%i"
|
||
)
|
||
if not defined PYTHON_PATH (
|
||
echo [错误] 未找到 Python,请先安装 Python 或创建虚拟环境
|
||
pause
|
||
exit /b 1
|
||
)
|
||
)
|
||
|
||
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
|