@echo off chcp 65001 >nul REM ============================================================ REM 自动任务调度脚本启动器 (Agent 模式) REM ============================================================ REM 功能:启动核心任务调度脚本 auto_execute_tasks.py REM 支持 Agent 单次执行、循环模式、部署管理等功能 REM ============================================================ setlocal enabledelayedexpansion REM 切换到项目根目录 cd /d %~dp0.. echo. echo ======================================================== echo 自动任务调度脚本启动器 (Agent 模式) echo ======================================================== echo. REM 检查 Python 是否安装 python --version >nul 2>&1 if errorlevel 1 ( echo [错误] 未找到 Python,请先安装 Python pause exit /b 1 ) REM 检查脚本文件是否存在 if not exist "scripts\auto_execute_tasks.py" ( echo [错误] 未找到脚本文件: scripts\auto_execute_tasks.py pause exit /b 1 ) REM 检查项目配置文件是否存在 if not exist "app\config\config.py" ( echo [错误] 未找到项目配置文件: app\config\config.py pause exit /b 1 ) REM 创建必要的目录 if not exist "logs" mkdir logs if not exist "tasks" mkdir tasks echo [信息] 当前目录: %cd% echo. echo ======================================================== echo 请选择运行模式 echo ======================================================== echo. echo 【Agent 模式】 echo 1. Agent 单次执行 (执行一次任务后退出) echo 2. Agent 循环模式 (持续监听任务) echo 3. Agent 循环模式 + 禁用自动部署 echo. echo 【部署管理】 echo 4. 测试生产服务器连接 echo 5. 立即部署指定任务 echo. echo 【系统管理】 echo 6. 查看服务状态 echo 7. 停止后台服务 echo. echo 0. 退出 echo ======================================================== echo. set /p choice="请输入选择 [0-7]: " if "%choice%"=="1" goto :run_agent_once if "%choice%"=="2" goto :run_agent_loop if "%choice%"=="3" goto :run_agent_no_deploy if "%choice%"=="4" goto :test_connection if "%choice%"=="5" goto :deploy_now if "%choice%"=="6" goto :check_status if "%choice%"=="7" goto :stop_service if "%choice%"=="0" goto :exit echo [错误] 无效的选择,请重新运行 pause exit /b 1 REM ============================================================ REM Agent 模式 REM ============================================================ :run_agent_once echo. echo ======================================================== echo Agent 单次执行模式 echo ======================================================== echo [功能] 执行一次任务后自动退出 echo [超时] 3600秒 (1小时) echo ======================================================== echo. python scripts\auto_execute_tasks.py --agent-run pause goto :exit :run_agent_loop echo. echo ======================================================== echo Agent 循环模式 echo ======================================================== echo [功能] 持续监听任务,自动启动/关闭 Agent echo [间隔] 任务检查: 300秒 echo [部署] 自动部署已启用 echo [提示] 按 Ctrl+C 可停止服务 echo ======================================================== echo. python scripts\auto_execute_tasks.py --agent-loop pause goto :exit :run_agent_no_deploy echo. echo ======================================================== echo Agent 循环模式 (禁用自动部署) echo ======================================================== echo [功能] 持续监听任务,自动启动/关闭 Agent echo [间隔] 任务检查: 300秒 echo [部署] 自动部署已禁用 echo [提示] 按 Ctrl+C 可停止服务 echo ======================================================== echo. python scripts\auto_execute_tasks.py --agent-loop --no-deploy pause goto :exit REM ============================================================ REM 部署管理 REM ============================================================ :test_connection echo. echo ======================================================== echo 测试生产服务器连接 echo ======================================================== echo [功能] 测试 SSH 连接到生产服务器 echo ======================================================== echo. python scripts\auto_execute_tasks.py --test-connection echo. pause goto :exit :deploy_now echo. echo ======================================================== echo 立即部署指定任务 echo ======================================================== echo. set /p task_id="请输入要部署的任务 ID: " if "%task_id%"=="" ( echo [错误] 任务 ID 不能为空 pause goto :exit ) echo. echo [部署] 任务 ID: %task_id% echo ======================================================== echo. python scripts\auto_execute_tasks.py --deploy-now %task_id% echo. pause goto :exit REM ============================================================ REM 系统管理 REM ============================================================ :check_status echo. echo ======================================================== echo 服务状态检查 echo ======================================================== echo. echo [进程状态] powershell -Command "$processes = Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like '*auto_execute_tasks.py*' }; if ($processes) { Write-Host '[运行中] 找到以下进程:' -ForegroundColor Green; $processes | ForEach-Object { Write-Host (' 进程ID: ' + $_.ProcessId + ' | 启动时间: ' + $_.CreationDate) } } else { Write-Host '[未运行] 未找到 auto_execute_tasks.py 进程' -ForegroundColor Yellow }" echo. echo ======================================================== echo 最近日志 - 最后 30 行 echo ======================================================== echo. if exist "logs\auto_execute.log" ( powershell -Command "Get-Content logs\auto_execute.log -Tail 30 -ErrorAction SilentlyContinue" ) else ( echo [提示] 日志文件不存在: logs\auto_execute.log ) echo. echo ======================================================== echo pending_tasks.json 状态 echo ======================================================== echo. if exist "tasks\pending_tasks.json" ( echo [文件存在] tasks\pending_tasks.json powershell -Command "$tasks = Get-Content 'tasks\pending_tasks.json' -Raw -ErrorAction SilentlyContinue | ConvertFrom-Json; if ($tasks) { Write-Host (' 任务数量: ' + $tasks.Count); $tasks | ForEach-Object { Write-Host (' - [' + $_.task_id + '] ' + $_.task_name + ' (' + $_.status + ')') } } else { Write-Host ' [空] 没有待处理任务' }" ) else ( echo [提示] pending_tasks.json 不存在 ) echo. echo ======================================================== echo 任务执行指令文件 echo ======================================================== echo. if exist "tasks\task_execute_instructions.md" ( echo [文件存在] tasks\task_execute_instructions.md powershell -Command "$content = Get-Content 'tasks\task_execute_instructions.md' -Raw -ErrorAction SilentlyContinue; if ($content) { $lines = $content -split '`n'; Write-Host (' 行数: ' + $lines.Count); Write-Host ' 前 10 行:'; $lines | Select-Object -First 10 | ForEach-Object { Write-Host (' ' + $_) } } else { Write-Host ' [空文件]' }" ) else ( echo [提示] task_execute_instructions.md 不存在 ) echo. pause goto :exit :stop_service echo. echo ======================================================== echo 停止后台服务 echo ======================================================== echo. powershell -Command "$processes = Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like '*auto_execute_tasks.py*' }; if ($processes) { Write-Host '[找到] 以下进程将被停止:' -ForegroundColor Yellow; $processes | ForEach-Object { Write-Host (' 进程ID: ' + $_.ProcessId); Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue }; Write-Host '[完成] 进程已停止' -ForegroundColor Green } else { Write-Host '[提示] 未找到运行中的进程' -ForegroundColor Cyan }" echo. pause goto :exit :exit endlocal exit /b 0