115 lines
4.1 KiB
Batchfile
115 lines
4.1 KiB
Batchfile
|
|
@echo off
|
||
|
|
setlocal enabledelayedexpansion
|
||
|
|
chcp 65001 >nul 2>&1
|
||
|
|
|
||
|
|
rem 浏览器自动打开子模式: 通过参数 _open_browser 触发
|
||
|
|
if /i "%~1"=="_open_browser" goto :open_browser_mode
|
||
|
|
|
||
|
|
title 自动签名系统
|
||
|
|
echo ========================================
|
||
|
|
echo 自动签名系统 - 启动中...
|
||
|
|
echo ========================================
|
||
|
|
echo.
|
||
|
|
|
||
|
|
cd /d "%~dp0"
|
||
|
|
|
||
|
|
set MYSQL_HOME=%~dp0mysql
|
||
|
|
set MYSQL_DATA=%MYSQL_HOME%\data
|
||
|
|
|
||
|
|
if exist "%MYSQL_HOME%\bin\mysqld.exe" (
|
||
|
|
echo [MySQL] 检测到内置 MySQL...
|
||
|
|
|
||
|
|
if not exist "%MYSQL_DATA%" (
|
||
|
|
echo [MySQL] 首次运行, 正在初始化数据目录...
|
||
|
|
"%MYSQL_HOME%\bin\mysqld.exe" --initialize-insecure --basedir="%MYSQL_HOME%" --datadir="%MYSQL_DATA%" 2>&1
|
||
|
|
echo [MySQL] 数据目录初始化完成
|
||
|
|
)
|
||
|
|
|
||
|
|
netstat -aon | findstr ":33366 " | findstr "LISTENING" >nul 2>&1
|
||
|
|
if !errorlevel! equ 0 (
|
||
|
|
echo [MySQL] 端口 33366 已被占用, MySQL 已在运行
|
||
|
|
) else (
|
||
|
|
echo [MySQL] 正在启动 MySQL 服务...
|
||
|
|
start "" /b "%MYSQL_HOME%\bin\mysqld.exe" --defaults-file="%MYSQL_HOME%\my.ini" --console
|
||
|
|
|
||
|
|
echo [MySQL] 等待 MySQL 就绪...
|
||
|
|
set MYSQL_READY=0
|
||
|
|
for /L %%i in (1,1,30) do (
|
||
|
|
if !MYSQL_READY! equ 0 (
|
||
|
|
timeout /t 1 /nobreak >nul 2>&1
|
||
|
|
netstat -aon | findstr ":33366 " | findstr "LISTENING" >nul 2>&1
|
||
|
|
if !errorlevel! equ 0 (
|
||
|
|
set MYSQL_READY=1
|
||
|
|
echo [MySQL] MySQL 已就绪 ^(端口 33366^)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
if !MYSQL_READY! equ 0 (
|
||
|
|
echo [MySQL] 等待超时, MySQL 可能未成功启动
|
||
|
|
)
|
||
|
|
)
|
||
|
|
|
||
|
|
echo [MySQL] 确保用户和数据库存在...
|
||
|
|
set USER_READY=0
|
||
|
|
for /L %%i in (1,1,10) do (
|
||
|
|
if !USER_READY! equ 0 (
|
||
|
|
"%MYSQL_HOME%\bin\mysql.exe" -u root --skip-password --port=33366 -e "CREATE DATABASE IF NOT EXISTS word_sign CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER IF NOT EXISTS 'admin'@'127.0.0.1' IDENTIFIED BY 'admin'; CREATE USER IF NOT EXISTS 'admin'@'localhost' IDENTIFIED BY 'admin'; CREATE USER IF NOT EXISTS 'admin'@'%%' IDENTIFIED BY 'admin'; GRANT ALL PRIVILEGES ON word_sign.* TO 'admin'@'127.0.0.1'; GRANT ALL PRIVILEGES ON word_sign.* TO 'admin'@'localhost'; GRANT ALL PRIVILEGES ON word_sign.* TO 'admin'@'%%'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%%' WITH GRANT OPTION; FLUSH PRIVILEGES;" >nul 2>&1
|
||
|
|
if !errorlevel! equ 0 (
|
||
|
|
set USER_READY=1
|
||
|
|
echo [MySQL] 用户和数据库配置完成
|
||
|
|
) else (
|
||
|
|
timeout /t 1 /nobreak >nul 2>&1
|
||
|
|
)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
if !USER_READY! equ 0 (
|
||
|
|
echo [MySQL] 用户和数据库配置失败, 将使用 SQLite 作为数据库
|
||
|
|
)
|
||
|
|
) else (
|
||
|
|
echo [MySQL] 未检测到内置 MySQL, 将使用 SQLite 作为数据库
|
||
|
|
)
|
||
|
|
|
||
|
|
echo.
|
||
|
|
echo [Web] 正在启动 Web 服务...
|
||
|
|
echo [Web] 启动成功后将自动打开浏览器 (默认地址: http://127.0.0.1:5001/)
|
||
|
|
echo.
|
||
|
|
|
||
|
|
rem 启动后台任务: 等待端口就绪后自动打开浏览器 (兼容 5001 / 5002 回退)
|
||
|
|
start "" /B "%~f0" _open_browser
|
||
|
|
|
||
|
|
if not exist "python" (
|
||
|
|
echo 正在使用系统Python...
|
||
|
|
python app.py
|
||
|
|
) else (
|
||
|
|
echo 正在使用内置Python...
|
||
|
|
python\python.exe app.py
|
||
|
|
)
|
||
|
|
|
||
|
|
echo.
|
||
|
|
echo 服务已停止运行。
|
||
|
|
|
||
|
|
if exist "%MYSQL_HOME%\bin\mysqladmin.exe" (
|
||
|
|
echo [MySQL] 正在关闭 MySQL...
|
||
|
|
"%MYSQL_HOME%\bin\mysqladmin.exe" -u root --port=33366 shutdown 2>nul
|
||
|
|
echo [MySQL] MySQL 已关闭
|
||
|
|
)
|
||
|
|
|
||
|
|
pause
|
||
|
|
exit /b 0
|
||
|
|
|
||
|
|
rem ===== 子模式: 轮询端口并打开浏览器 =====
|
||
|
|
:open_browser_mode
|
||
|
|
for /L %%i in (1,1,120) do (
|
||
|
|
timeout /t 1 /nobreak >nul 2>&1
|
||
|
|
netstat -aon | findstr ":5001 " | findstr "LISTENING" >nul 2>&1
|
||
|
|
if !errorlevel! equ 0 (
|
||
|
|
start "" http://127.0.0.1:5001/
|
||
|
|
exit /b 0
|
||
|
|
)
|
||
|
|
netstat -aon | findstr ":5002 " | findstr "LISTENING" >nul 2>&1
|
||
|
|
if !errorlevel! equ 0 (
|
||
|
|
start "" http://127.0.0.1:5002/
|
||
|
|
exit /b 0
|
||
|
|
)
|
||
|
|
)
|
||
|
|
exit /b 0
|