@echo off chcp 65001 >nul 2>&1 title FTP Server :: ============================ :: FTP Server 启动/停止脚本 (Windows) :: ============================ set "APP_NAME=ftp-server" set "APP_EXE=%~dp0ftp-server.exe" set "CONFIG=%~dp0config.json" set "LOG_FILE=%~dp0ftp-server.log" set "PID_FILE=%~dp0ftp-server.pid" if "%1"=="" goto :usage if "%1"=="start" goto :start if "%1"=="stop" goto :stop if "%1"=="restart" goto :restart if "%1"=="status" goto :status goto :usage :: ---------- 启动 ---------- :start if not exist "%APP_EXE%" ( echo [错误] 未找到 %APP_EXE% echo 请先编译: go build -o ftp-server.exe ./cmd/ exit /b 1 ) :: 检查是否已在运行 tasklist /FI "IMAGENAME eq %APP_NAME%.exe" 2>nul | find /i "%APP_NAME%.exe" >nul if %errorlevel%==0 ( echo [提示] %APP_NAME% 已经在运行中 goto :status ) echo [启动] 正在启动 %APP_NAME% ... start "%APP_NAME%" /MIN "%APP_EXE%" -config "%CONFIG%" :: 等待启动 timeout /t 2 /nobreak >nul :: 检查是否启动成功 tasklist /FI "IMAGENAME eq %APP_NAME%.exe" 2>nul | find /i "%APP_NAME%.exe" >nul if %errorlevel%==0 ( echo [成功] %APP_NAME% 已启动 echo Web 管理面板: http://localhost:8080 echo FTP 端口: 2121 ) else ( echo [失败] %APP_NAME% 启动失败,请检查配置 ) goto :eof :: ---------- 停止 ---------- :stop echo [停止] 正在停止 %APP_NAME% ... tasklist /FI "IMAGENAME eq %APP_NAME%.exe" 2>nul | find /i "%APP_NAME%.exe" >nul if %errorlevel%==0 ( taskkill /F /IM "%APP_NAME%.exe" >nul 2>&1 timeout /t 1 /nobreak >nul echo [成功] %APP_NAME% 已停止 ) else ( echo [提示] %APP_NAME% 未在运行 ) goto :eof :: ---------- 重启 ---------- :restart call %0 stop timeout /t 2 /nobreak >nul call %0 start goto :eof :: ---------- 状态 ---------- :status tasklist /FI "IMAGENAME eq %APP_NAME%.exe" 2>nul | find /i "%APP_NAME%.exe" >nul if %errorlevel%==0 ( echo [状态] %APP_NAME% 正在运行 for /f "tokens=2" %%a in ('tasklist /FI "IMAGENAME eq %APP_NAME%.exe" /NH 2^>nul') do ( echo PID: %%a ) ) else ( echo [状态] %APP_NAME% 未运行 ) goto :eof :: ---------- 帮助 ---------- :usage echo. echo 用法: %~nx0 {start^|stop^|restart^|status} echo. echo 命令: echo start 启动 FTP Server echo stop 停止 FTP Server echo restart 重启 FTP Server echo status 查看运行状态 echo.