我想要启动的应用程序是 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 行。
- 创建一个快捷方式
mongod
(或者perl
在我的情况下)。 - 右键单击快捷方式,然后单击特性。
- 在捷径选项卡目标字段,添加参数至
mongod
。 - 开始于字段控制启动程序的初始当前目录。默认情况下,它将是 .exe 所在的目录。
- 在捷径选项卡目标字段,添加参数至
- 点击布局标签。
- 改变窗口大小至 140×70。
- 您可以增加高度的屏幕缓冲区大小达到 1000 条或更多才能够滚动到较旧的消息。
- 如果你清楚让系统定位窗口,您可以指定控制台窗口在屏幕上的位置。
- 改变窗口大小至 140×70。
- 点击好的关闭快捷方式属性。
现在,当您单击此快捷方式时,控制台窗口将具有指定的大小。当您按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"
“&”符号用作分隔符。使用类似这样的命令行创建的快捷方式应该可以解决问题。