@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