从 Windows Terminal 打开 conhost 窗口执行命令

收到一个有意思的单子:如何从 Windows Terminal(wt) 打开 conhost 来执行命令?我来谈谈我的想法。

分析

这个命题有点怪,我第一次看到这题目,想起来的是 之前 发现 dosbox 的控制台在 wt 下一直有显示错误, 我最初一怒之下卸了 wt,才找回原来的 cmd 控制台(也就是 conhost), 不过这不应该是我们讨论的范畴,每个问题一般都有它的考量,我们还是应该注重于,这一点能不能做到。

从 wt 打开 conhost 其实不难,PowerShell 或 cmd 下,用 start 就可以:

start conhost

有一点需要说明,对于 PowerShell 来说,这个 start 其实是 Start-Process,不过,其实并不影响后续的使用。

打开 conhost 并不是我们的目的,我们要在 conhost 中执行一些命令,这样的话,把命令写进批处理文件似乎不错。比如我们写了下面一个批处理,保存在 d:\test.bat:

echo hello
pause

其实只是打印一个 hello,然后按任意键退出,为什么后面加了这个 pause ,我们稍后再说。

那么我们如何让 conhost 执行这个文件呢?一样非常简单:

start conhost d:\test.bat

当我们在命令行窗口按下任意键后,你会注意到,conhost 自己退出了, 现在你应该知道为什么我要加一个 pause 在最后了:执行完批处理文件后 conhost 会自动退出, 所以有 pause 我们可以观察一下输出结果。

总结

如果需要在 Windows Terminal 下打开原始的命令行 conhost 并执行一些命令,我们可以这样做:

  1. 把执行的命令写成批处理
  2. 使用 start conhost 来执行

其实还有一些未知的地方,比如,如何给批处理文件传递参数,有关 conhost 我还知之甚少, 过了几次也没有试出来结果,就先放一放吧。