@echo off setlocal enabledelayedexpansion set "ROOT=%~dp0..\.." for %%I in ("%ROOT%") do set "ROOT=%%~fI" set "RUNTIME_DIR=%ROOT%\runtime" set "DATA_DIR=%ROOT%\data" set "ENV_FILE=%RUNTIME_DIR%\local-env.bat" if not exist "%RUNTIME_DIR%" mkdir "%RUNTIME_DIR%" if not exist "%DATA_DIR%" mkdir "%DATA_DIR%" where java >nul 2>nul if errorlevel 1 ( echo [ERROR] 未检测到 Java,请先安装 JDK/JRE 8+ pause exit /b 1 ) if not exist "%ENV_FILE%" ( echo 首次启动,正在生成本地运行密钥... powershell -NoProfile -ExecutionPolicy Bypass -Command ^ "$jwt=[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(([Guid]::NewGuid().ToString('N')+[Guid]::NewGuid().ToString('N'))));" ^ "$bytes=New-Object byte[] 32; [Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes); $enc=[Convert]::ToBase64String($bytes);" ^ "$content=@('set SSHMANAGER_JWT_SECRET='+$jwt,'set SSHMANAGER_ENCRYPTION_KEY='+$enc); Set-Content -Path '%ENV_FILE%' -Value $content -Encoding ASCII" if errorlevel 1 ( echo [ERROR] 生成本地密钥失败 pause exit /b 1 ) ) call "%ENV_FILE%" set "DATA_DIR=%DATA_DIR%" set "APP_JAR=" for %%F in ("%ROOT%\backend\target\*.jar") do ( set "APP_JAR=%%~fF" ) if not defined APP_JAR ( echo [ERROR] 未找到 backend\target\*.jar echo 请先执行发布构建,或将打包后的 jar 放到 backend\target 目录。 pause exit /b 1 ) echo 启动 SSH Manager... echo 数据目录: %DATA_DIR% echo 程序包: %APP_JAR% echo 访问地址: http://localhost:48080 echo. java -jar "%APP_JAR%" endlocal