如何打开具有给定窗口大小的控制台应用程序?

如何打开具有给定窗口大小的控制台应用程序?

我想要启动的应用程序是 MongoDB。如果我正常启动它,它看起来是这样的:

在此处输入图片描述

我不喜欢大量的换行符,而且我有很多屏幕空间,所以我想利用所述空间来摆脱换行符。

我可以使用 来更改控制台窗口的大小MODE,因此我编写了一个如下批处理文件:

@ECHO OFF
MODE con:cols=140 lines=70
%~dp0mongodb\bin\mongod --dbpath %~dp0data --rest

到目前为止一切顺利。当我启动这个批处理文件时,我得到了一个更大的窗口,正如我所希望的那样。

但是当我现在按Ctrl+C退出 MongoDB 时,我收到了烦人的提示:

Terminate batch job (Y/N)?

这是没用的,因为我刚刚退出的命令无论如何都是批处理作业中的最后一个命令,无论我回答什么,结果都是一样的。

Ctrl那么,如何才能为应用程序获取更大的控制台窗口,而又不在按下+时出现提示C

答案1

我今天花了几个小时实现了一个小型 C# 应用程序,它可以包装另一个控制台应用程序并调整控制台主机的窗口大小。

console-wrapper使用起来很简单。它只需要几个命令行参数:

Usage: console-wrapper.exe [OPTIONS]

Options:

      --subject=VALUE        The application that should be started by the
                               console wrapper.
      --width=VALUE          The desired width of the console window.
      --height=VALUE         The desired height of the console window.
  -h, -?, --help             Shows this help message

--width--height用于设置结果控制台窗口的大小。--subject可以选择使用,如果省略,则其余参数将被视为启动的命令(带参数)。

因此,我现在在启动脚本中使用的最终调用是:

START "MongoDB" database\console-wrapper.exe --width=140 --height=70 %~dp0database\mongodb\bin\mongod.exe --dbpath %~dp0database\data --rest

生成的窗口将具有所请求的大小,并且在按下Ctrl+后C,窗口将关闭(在正确关闭所包含的进程之后)。

答案2

据我理解,您希望 MongoDB 具有指定大小的控制台窗口,并在按Ctrl+时退出C。 那么答案很简单:使用快捷方式来启动它。

我没有mongod可执行文件,因此我将使用它perl.exe作为示例。当您从跑步对话框(Windows+ R),控制台窗口的大小为标准的 80×25,缓冲区大小为 300 行。

  1. 创建一个快捷方式mongod(或者perl在我的情况下)。
  2. 右键单击快捷方式,然后单击特性
    1. 捷径选项卡目标字段,添加参数至mongod
    2. 开始于字段控制启动程序的初始当前目录。默认情况下,它将是 .exe 所在的目录。
  3. 点击布局标签。
    1. 改变窗口大小至 140×70。
      快捷方式属性,布局选项卡
    2. 您可以增加高度屏幕缓冲区大小达到 1000 条或更多才能够滚动到较旧的消息。
    3. 如果你清楚让系统定位窗口,您可以指定控制台窗口在屏幕上的位置。
  4. 点击好的关闭快捷方式属性。

现在,当您单击此快捷方式时,控制台窗口将具有指定的大小。当您按Ctrl+C时,应用程序将退出,窗口将关闭,而不会出现任何其他提示。


您还可以在启动窗口后更改窗口的布局跑步对话框。右键单击控制台窗口的标题,然后单击特性。 点击布局选项卡,调整窗口大小并点击好的关闭属性并立即应用更改。(如果窗口是从快捷方式启动的,则快捷方式的属性会更新。)

下次启动同一个应用程序时,控制台窗口的大小就会神奇地变成相同的大小。(这次我没有检查,但它以前是可以工作的。)

答案3

您是否考虑过从 powershell 脚本运行它?Powershell 能够调整其自身窗口的大小

$h = Get-Host
$buf = $h.UI.RawUI.BufferSize
$buf.Width = 300
$h.ui.rawui.BufferSize = $buf
$win = $h.UI.RawUI.WindowSize
$win.Width = 150
$h.ui.rawui.WindowSize = $win
#Command to start mongodb here.

这将创建一个大小为 150 的窗口,但也具有 300 的横向可滚动缓冲区。

答案4

批处理文件中的所有内容都可以通过命令行传递给 CMD。例如:

CMD.exe /k "TITLE In my home: & MODE con:cols=140 & DIR %HOMEPATH% /od /w"

“&”符号用作分隔符。使用类似这样的命令行创建的快捷方式应该可以解决问题。

相关内容