如何在启动SSH远程Xterm时避免残留Windows CMD终端窗口
如何在启动SSH远程Xterm时避免残留Windows CMD终端窗口
我明白你的困扰——双击.cmd脚本启动远程xterm后,总是留着一个没用的CMD窗口,手动关闭又麻烦。结合你的场景(干净Windows 10环境,不想改注册表),给你几个实用的解决方案:
方案1:修改现有.cmd脚本,让SSH在独立窗口运行
你当前用start /B是让SSH在当前CMD会话的后台运行,这会导致父CMD窗口和SSH进程绑定,直到SSH结束才会自动关闭。我们可以调整启动参数,让SSH在一个独立的、最小化的窗口里运行,这样原CMD窗口执行完脚本就会自动退出:
修改你的.cmd脚本内容为:
echo Before time: %TIME% start /min ssh mysrv "xterm -T mysrv -display mypc:0.0" echo After time: %TIME%
/min参数会让SSH在一个最小化的CMD窗口里运行,这个窗口几乎不会打扰到你- 原脚本执行完所有命令后会立即关闭自身的CMD窗口,不会残留
- 当你关闭xterm窗口时,那个最小化的SSH窗口也会自动关闭
如果你连最小化窗口都不想看到,可以换成/hidden参数(需要配合cmd /c来确保命令正确执行):
echo Before time: %TIME% start /hidden cmd /c "ssh mysrv ""xterm -T mysrv -display mypc:0.0""" echo After time: %TIME%
方案2:用VBS脚本彻底消除控制台窗口
VBS脚本运行时本身不会弹出任何控制台窗口,是最干净的解决方案。创建一个后缀为.vbs的文件(比如命名为run_xterm.vbs),内容如下:
Set WshShell = CreateObject("WScript.Shell") WshShell.Run "ssh mysrv ""xterm -T mysrv -display mypc:0.0""", 0, False
- 数字
0表示隐藏运行窗口,全程看不到任何控制台界面 False表示脚本不等待SSH进程结束,执行完就立即退出- 双击这个VBS文件就能直接启动xterm,没有任何多余窗口干扰
方案3:用PowerShell脚本替代CMD
如果你愿意尝试PowerShell,也能实现无窗口运行。创建一个.ps1文件(比如run_xterm.ps1),内容为:
Start-Process ssh -ArgumentList 'mysrv', 'xterm -T mysrv -display mypc:0.0' -WindowStyle Hidden
-WindowStyle Hidden让SSH在隐藏窗口中运行- 双击这个PS1文件时,PowerShell会短暂弹出窗口后立即关闭(如果想完全消除这个短暂窗口,可以用VBS来启动PowerShell脚本,但方案2已经足够简洁)
备注:内容来源于stack exchange,提问作者EquipDev




