如何通过批处理文件实现Windows Terminal多标签页SSH连接并运行项目服务
如何通过批处理文件实现Windows Terminal多标签页SSH连接并运行项目服务
嘿,我完全懂你的需求——想一键用批处理在Windows Terminal开多个标签,每个标签自动完成SSH登录服务器、切换到项目目录、启动开发服务对吧?之前你只能打开单个标签SSH进去,现在我来帮你搞定多标签的完整流程!
首先得理清两个核心关键点:
- Windows Terminal的
wt命令支持用--tab参数创建新标签,每个标签可以单独指定要执行的命令 - SSH登录后直接执行远程命令的话,默认执行完就会断开连接,所以得加
-t参数强制分配伪终端,这样执行完npm run dev后标签会保持打开,不会自动退出
接下来直接给你能用的批处理代码,分两种常见情况说明:
情况1:启动两个不同的项目(对应你提到的2个app)
如果两个app分别在dev/my_app1和dev/my_app2目录,批处理可以这么写:
@echo off start wt ^ --tab "App 1 开发服务" ssh -t my-user-name@my-instance-my-user-name "cd dev/my_app1 && npm run dev" ^ --tab "App 2 开发服务" ssh -t my-user-name@my-instance-my-user-name "cd dev/my_app2 && npm run dev"
情况2:同一个项目开两个标签(重复步骤1-4两次)
如果是要在两个标签里启动同一个dev/my_app的服务,代码改成这样:
@echo off start wt ^ --tab "App 开发服务-1" ssh -t my-user-name@my-instance-my-user-name "cd dev/my_app && npm run dev" ^ --tab "App 开发服务-2" ssh -t my-user-name@my-instance-my-user-name "cd dev/my_app && npm run dev"
代码细节解释:
^是批处理的换行续行符,让代码看起来更整洁,你也可以把所有内容写在一行,但换行后可读性更好--tab "标签名称"可以自定义每个标签的显示名字,方便你区分不同的服务ssh -t 用户名@实例地址 "远程命令"里的-t是核心,它会强制SSH分配一个伪终端,这样执行完npm run dev后会话不会自动关闭,你能正常看到服务的日志输出- 远程命令用双引号包裹,
cd dev/my_app && npm run dev表示先切换到项目目录,确认成功后再执行启动命令,避免目录不存在时直接运行npm出错
最后把代码保存成run-dev-services.bat,双击运行就能看到Windows Terminal自动打开对应标签,完成所有预设步骤啦!
备注:内容来源于stack exchange,提问作者joyfuljoy




