Files
FTP-Server/scripts/service-windows.bat
2026-05-06 18:23:23 +08:00

167 lines
3.7 KiB
Batchfile

@echo off
chcp 65001 >nul
title FTP Server 服务管理
:: 配置区域 - 请根据实际路径修改
set FTP_HOME=%~dp0
set FTP_EXE=%FTP_HOME%ftp-server.exe
set SERVICE_NAME=FTP-Server
set CONFIG_FILE=%FTP_HOME%config.json
:: 检查管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
echo [错误] 请以管理员身份运行此脚本!
echo 右键点击脚本 -^> "以管理员身份运行"
pause
exit /b 1
)
:: 检查可执行文件
if not exist "%FTP_EXE%" (
echo [错误] 找不到 %FTP_EXE%
echo 请确保 ftp-server.exe 在脚本同目录下
pause
exit /b 1
)
:menu
cls
echo ========================================
echo FTP Server 服务管理工具
echo ========================================
echo.
echo 1. 安装服务 (注册为 Windows 服务)
echo 2. 卸载服务
echo 3. 启动服务
echo 4. 停止服务
echo 5. 重启服务
echo 6. 查看服务状态
echo 7. 开机自启 - 开启
echo 8. 开机自启 - 关闭
echo 9. 查看运行日志
echo 0. 退出
echo.
set /p choice=请输入选项:
if "%choice%"=="1" goto install
if "%choice%"=="2" goto uninstall
if "%choice%"=="3" goto start
if "%choice%"=="4" goto stop
if "%choice%"=="5" goto restart
if "%choice%"=="6" goto status
if "%choice%"=="7" goto enable
if "%choice%"=="8" goto disable
if "%choice%"=="9" goto logs
if "%choice%"=="0" exit /b 0
echo 无效选项
pause
goto menu
:install
echo [信息] 正在安装服务...
sc create %SERVICE_NAME% binPath= "%FTP_EXE% -config %CONFIG_FILE%" start= demand DisplayName= "FTP Server with Web Management"
if %errorlevel% equ 0 (
echo [成功] 服务安装成功!
echo [信息] 使用选项 3 启动服务,或选项 7 设置开机自启
) else (
echo [失败] 服务安装失败
)
pause
goto menu
:uninstall
echo [信息] 正在停止服务...
net stop %SERVICE_NAME% >nul 2>&1
echo [信息] 正在卸载服务...
sc delete %SERVICE_NAME%
if %errorlevel% equ 0 (
echo [成功] 服务已卸载
) else (
echo [失败] 服务卸载失败,可能服务不存在
)
pause
goto menu
:start
echo [信息] 正在启动服务...
net start %SERVICE_NAME%
if %errorlevel% equ 0 (
echo [成功] 服务已启动
echo FTP端口: 2121
echo Web管理: http://localhost:8080
) else (
echo [失败] 服务启动失败
)
pause
goto menu
:stop
echo [信息] 正在停止服务...
net stop %SERVICE_NAME%
if %errorlevel% equ 0 (
echo [成功] 服务已停止
) else (
echo [失败] 服务停止失败,可能服务未运行
)
pause
goto menu
:restart
echo [信息] 正在重启服务...
net stop %SERVICE_NAME% >nul 2>&1
timeout /t 2 /nobreak >nul
net start %SERVICE_NAME%
if %errorlevel% equ 0 (
echo [成功] 服务已重启
) else (
echo [失败] 服务重启失败
)
pause
goto menu
:status
echo [信息] 服务状态:
sc query %SERVICE_NAME%
echo.
echo [信息] 服务配置:
sc qc %SERVICE_NAME%
pause
goto menu
:enable
echo [信息] 正在设置开机自启...
sc config %SERVICE_NAME% start= auto
if %errorlevel% equ 0 (
echo [成功] 已设置开机自启
) else (
echo [失败] 设置失败
)
pause
goto menu
:disable
echo [信息] 正在关闭开机自启...
sc config %SERVICE_NAME% start= demand
if %errorlevel% equ 0 (
echo [成功] 已关闭开机自启
) else (
echo [失败] 设置失败
)
pause
goto menu
:logs
echo [信息] 最近的应用程序日志 (FTP Server):
echo ========================================
wevtutil qe Application /q:"*[System[Provider[@Name='%SERVICE_NAME%']]]" /c:20 /f:text /rd:true
if %errorlevel% neq 0 (
echo 暂无事件日志
echo.
echo 提示: 可以直接查看控制台输出或重定向日志到文件:
echo %FTP_EXE% ^> server.log 2^>^&1
)
echo ========================================
pause
goto menu