Files

126 lines
3.5 KiB
Batchfile
Raw Permalink Normal View History

@echo off
chcp 65001 >nul
rem ============================================================
rem 会话机制 · 一键开关
rem
rem 双击即可。做三件事:
rem 1) 开 / 关 会话机制(常驻程序 + 看板)
rem 2) 「全部停止」时,把「计划任务 + 进程」一次停干净
rem 3) 结果写进同目录的「会话机制-结果.txt」并显示出来
rem
rem 为什么"停"要三步一起做:只禁任务,老进程还在跑;
rem 只杀进程,任务到点又把它拉起来 —— 两边都做才算真停。
rem ============================================================
set "PYW=E:\ProgramData\.workbuddy\binaries\python\versions\3.13.12\pythonw.exe"
set "CTL=E:\ProgramData\.workbuddy\skills\session-mechanism\scripts\collabctl.py"
set "OUT=%~dp0会话机制-结果.txt"
cd /d "%~dp0"
cls
echo.
echo ============================================
echo 会话机制 · 一键开关
echo ============================================
echo.
echo 1 = 全部启动(常驻 + 看板 开始运行)
echo 2 = 全部停止(任务 + 进程 一起停干净)
echo 3 = 只看状态(不改动任何东西)
echo 4 = 只停指定工作区(可多个用逗号分隔,⛔ 不动看板与其它区)
echo 0 = 退出
echo.
rem 🔴 也能直接带参数用(免交互):
rem 会话机制-一键开关.bat off vibe-product
rem 会话机制-一键开关.bat off vibe-product,contentm_agent
if not "%~1"=="" goto arg_mode
echo.
set "CH="
set /p CH= 请输入 1 / 2 / 3 / 0 :
if "%CH%"=="1" goto do_on
if "%CH%"=="2" goto do_off
if "%CH%"=="3" goto do_status
if "%CH%"=="4" goto do_off_some
if "%CH%"=="0" goto bye
echo ⛔ 没看懂 "%CH%",请重新运行。
pause
goto bye
:arg_mode
rem 🔴 带参数直用:`… .bat off <区名[,区名]>` ⇔ 「传哪些就关哪些」(⛔ 不动看板与其它区)
if /i "%~1"=="off" goto arg_off
if /i "%~1"=="status" goto do_status
if /i "%~1"=="on" goto do_on
echo ⛔ 认不出参数 "%~1"(只支持 off / status / on)。
pause
goto bye
:arg_off
set "WSL=%~2"
if "%WSL%"=="" ( echo. & echo ⛔ off 后面要跟区名(可多个,逗号分隔)。 & pause & goto bye )
goto off_some_run
:do_off_some
echo.
echo 名单(三选,可多个): ai1net-dsh-server , vibe-product , contentm_agent
set "WSL="
set /p WSL= 要停哪些(逗号分隔):
if "%WSL%"=="" ( echo. & echo ⛔ 没输入,已取消。 & pause & goto bye )
:off_some_run
echo.
echo 正在只停:%WSL%
del "%OUT%" >nul 2>&1
"%PYW%" "%CTL%" off --ws "%WSL%" --out "%OUT%"
goto wait_show
:do_on
echo.
echo 正在启动…
del "%OUT%" >nul 2>&1
"%PYW%" "%CTL%" on --out "%OUT%"
goto wait_show
:do_off
echo.
echo 正在全部停止(任务 + 进程)…
del "%OUT%" >nul 2>&1
"%PYW%" "%CTL%" off --out "%OUT%"
goto wait_show
:do_status
echo.
echo 正在读取状态…
del "%OUT%" >nul 2>&1
"%PYW%" "%CTL%" status --out "%OUT%"
goto wait_show
:wait_show
rem 等 pythonw 把结果写完(最多 15 秒)
set /a _n=0
:wait_loop
if exist "%OUT%" goto show
set /a _n+=1
if %_n% GEQ 15 goto show_miss
ping -n 2 127.0.0.1 >nul
goto wait_loop
:show
echo.
type "%OUT%"
echo.
echo --------------------------------------------
echo 结果已存到:%OUT%
echo --------------------------------------------
pause
goto bye
:show_miss
echo.
echo ⛔ 等不到结果文件,说明入口没跑起来。
echo 请把下面这行发给我:
echo %CTL%
pause
goto bye
:bye
endlocal