start_task_scheduler.bat 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. @echo off
  2. chcp 65001 >nul
  3. REM ============================================================
  4. REM 自动任务调度脚本启动器 (Agent 模式)
  5. REM ============================================================
  6. REM 功能:启动核心任务调度脚本 auto_execute_tasks.py
  7. REM 支持 Agent 单次执行、循环模式、部署管理等功能
  8. REM ============================================================
  9. setlocal enabledelayedexpansion
  10. REM 切换到项目根目录
  11. cd /d %~dp0..
  12. echo.
  13. echo ========================================================
  14. echo 自动任务调度脚本启动器 (Agent 模式)
  15. echo ========================================================
  16. echo.
  17. REM 检查 Python 是否安装
  18. python --version >nul 2>&1
  19. if errorlevel 1 (
  20. echo [错误] 未找到 Python,请先安装 Python
  21. pause
  22. exit /b 1
  23. )
  24. REM 检查脚本文件是否存在
  25. if not exist "scripts\auto_execute_tasks.py" (
  26. echo [错误] 未找到脚本文件: scripts\auto_execute_tasks.py
  27. pause
  28. exit /b 1
  29. )
  30. REM 检查项目配置文件是否存在
  31. if not exist "app\config\config.py" (
  32. echo [错误] 未找到项目配置文件: app\config\config.py
  33. pause
  34. exit /b 1
  35. )
  36. REM 创建必要的目录
  37. if not exist "logs" mkdir logs
  38. if not exist "tasks" mkdir tasks
  39. echo [信息] 当前目录: %cd%
  40. echo.
  41. echo ========================================================
  42. echo 请选择运行模式
  43. echo ========================================================
  44. echo.
  45. echo 【Agent 模式】
  46. echo 1. Agent 单次执行 (执行一次任务后退出)
  47. echo 2. Agent 循环模式 (持续监听任务)
  48. echo 3. Agent 循环模式 + 禁用自动部署
  49. echo.
  50. echo 【部署管理】
  51. echo 4. 测试生产服务器连接
  52. echo 5. 立即部署指定任务
  53. echo.
  54. echo 【系统管理】
  55. echo 6. 查看服务状态
  56. echo 7. 停止后台服务
  57. echo.
  58. echo 0. 退出
  59. echo ========================================================
  60. echo.
  61. set /p choice="请输入选择 [0-7]: "
  62. if "%choice%"=="1" goto :run_agent_once
  63. if "%choice%"=="2" goto :run_agent_loop
  64. if "%choice%"=="3" goto :run_agent_no_deploy
  65. if "%choice%"=="4" goto :test_connection
  66. if "%choice%"=="5" goto :deploy_now
  67. if "%choice%"=="6" goto :check_status
  68. if "%choice%"=="7" goto :stop_service
  69. if "%choice%"=="0" goto :exit
  70. echo [错误] 无效的选择,请重新运行
  71. pause
  72. exit /b 1
  73. REM ============================================================
  74. REM Agent 模式
  75. REM ============================================================
  76. :run_agent_once
  77. echo.
  78. echo ========================================================
  79. echo Agent 单次执行模式
  80. echo ========================================================
  81. echo [功能] 执行一次任务后自动退出
  82. echo [超时] 3600秒 (1小时)
  83. echo ========================================================
  84. echo.
  85. python scripts\auto_execute_tasks.py --agent-run
  86. pause
  87. goto :exit
  88. :run_agent_loop
  89. echo.
  90. echo ========================================================
  91. echo Agent 循环模式
  92. echo ========================================================
  93. echo [功能] 持续监听任务,自动启动/关闭 Agent
  94. echo [间隔] 任务检查: 300秒
  95. echo [部署] 自动部署已启用
  96. echo [提示] 按 Ctrl+C 可停止服务
  97. echo ========================================================
  98. echo.
  99. python scripts\auto_execute_tasks.py --agent-loop
  100. pause
  101. goto :exit
  102. :run_agent_no_deploy
  103. echo.
  104. echo ========================================================
  105. echo Agent 循环模式 (禁用自动部署)
  106. echo ========================================================
  107. echo [功能] 持续监听任务,自动启动/关闭 Agent
  108. echo [间隔] 任务检查: 300秒
  109. echo [部署] 自动部署已禁用
  110. echo [提示] 按 Ctrl+C 可停止服务
  111. echo ========================================================
  112. echo.
  113. python scripts\auto_execute_tasks.py --agent-loop --no-deploy
  114. pause
  115. goto :exit
  116. REM ============================================================
  117. REM 部署管理
  118. REM ============================================================
  119. :test_connection
  120. echo.
  121. echo ========================================================
  122. echo 测试生产服务器连接
  123. echo ========================================================
  124. echo [功能] 测试 SSH 连接到生产服务器
  125. echo ========================================================
  126. echo.
  127. python scripts\auto_execute_tasks.py --test-connection
  128. echo.
  129. pause
  130. goto :exit
  131. :deploy_now
  132. echo.
  133. echo ========================================================
  134. echo 立即部署指定任务
  135. echo ========================================================
  136. echo.
  137. set /p task_id="请输入要部署的任务 ID: "
  138. if "%task_id%"=="" (
  139. echo [错误] 任务 ID 不能为空
  140. pause
  141. goto :exit
  142. )
  143. echo.
  144. echo [部署] 任务 ID: %task_id%
  145. echo ========================================================
  146. echo.
  147. python scripts\auto_execute_tasks.py --deploy-now %task_id%
  148. echo.
  149. pause
  150. goto :exit
  151. REM ============================================================
  152. REM 系统管理
  153. REM ============================================================
  154. :check_status
  155. echo.
  156. echo ========================================================
  157. echo 服务状态检查
  158. echo ========================================================
  159. echo.
  160. echo [进程状态]
  161. 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 }"
  162. echo.
  163. echo ========================================================
  164. echo 最近日志 - 最后 30 行
  165. echo ========================================================
  166. echo.
  167. if exist "logs\auto_execute.log" (
  168. powershell -Command "Get-Content logs\auto_execute.log -Tail 30 -ErrorAction SilentlyContinue"
  169. ) else (
  170. echo [提示] 日志文件不存在: logs\auto_execute.log
  171. )
  172. echo.
  173. echo ========================================================
  174. echo pending_tasks.json 状态
  175. echo ========================================================
  176. echo.
  177. if exist "tasks\pending_tasks.json" (
  178. echo [文件存在] tasks\pending_tasks.json
  179. 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 ' [空] 没有待处理任务' }"
  180. ) else (
  181. echo [提示] pending_tasks.json 不存在
  182. )
  183. echo.
  184. echo ========================================================
  185. echo 任务执行指令文件
  186. echo ========================================================
  187. echo.
  188. if exist "tasks\task_execute_instructions.md" (
  189. echo [文件存在] tasks\task_execute_instructions.md
  190. 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 ' [空文件]' }"
  191. ) else (
  192. echo [提示] task_execute_instructions.md 不存在
  193. )
  194. echo.
  195. pause
  196. goto :exit
  197. :stop_service
  198. echo.
  199. echo ========================================================
  200. echo 停止后台服务
  201. echo ========================================================
  202. echo.
  203. 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 }"
  204. echo.
  205. pause
  206. goto :exit
  207. :exit
  208. endlocal
  209. exit /b 0