如何在批处理脚本中更改Windows命令提示符中的屏幕缓冲区大小

gro*_*rtn 50 windows cmd batch-file

我知道你可以右键单击属性 - >布局并手动更改它.

但是,您如何从Windows批处理脚本中更改它?

我知道你可以使用类似的东西从脚本中改变它的大小

MODE CON: COLS=90 LINES=10

但是,如何更改缓冲区大小?

该脚本将运行一段时间,有时在失败之前退出它需要一些时间,所以我需要更大的缓冲区.

Nam*_*una 58

我只是在寻找这个确切问题的答案,来找出命令本身调整缓冲区!

mode con:cols=140 lines=70
Run Code Online (Sandbox Code Playgroud)

线= 70部分实际上调整在"屏幕缓冲区大小"的高度设置,而不是在"窗口大小"设置的高度.

通过运行命令设置'lines = 2500'(或任何你想要的缓冲区),然后检查窗口的'属性',你会看到确实缓冲区现在设置为2500.

我的批处理脚本最终看起来像这样:

@echo off
cmd "mode con:cols=140 lines=2500"

  • AAArrrgh!太糟糕了!所以,你的意思是我只能选择使用最大屏幕高度的窗口,但是有一个漂亮的大缓冲区或一个看起来更好的窗口,其高度很短,只有一个可见的缓冲区.瘸.太糟糕了,你可以做类似的事情:cols = 120行= 50缓冲区= 9999.那会摇滚. (7认同)

San*_*dyl 43

我只是试试Windows 7上的最大行我可以使用mode con命令设置并发现它是32766 2 ^ 15-2你可以用以下命令设置它

mode con lines=32766
Run Code Online (Sandbox Code Playgroud)

虽然您也可以从GUI设置屏幕缓冲区大小,但您可以获得的最大值是9999.


Pet*_*orf 12

mode con lines=32766
Run Code Online (Sandbox Code Playgroud)

设置缓冲区,但也将窗口高度增加到全屏,这很难看.

您可以直接在注册表中更改设置:

:: escape the environment variable in the key name
set mySysRoot=%%SystemRoot%%

:: 655294544 equals 9999 lines in the GUI
reg.exe add "HKCU\Console\%mySysRoot%_system32_cmd.exe" /v ScreenBufferSize /t REG_DWORD /d 655294544 /f

:: We also need to change the Window Height, 3276880 = 50 lines
reg.exe add "HKCU\Console\%mySysRoot%_system32_cmd.exe" /v WindowSize /t REG_DWORD /d 3276880 /f
Run Code Online (Sandbox Code Playgroud)

您启动的下一个cmd.exe具有增加缓冲区.

因此,这对于您已经使用的cmd.exe不起作用,但只是在预调制的CSS.cmd中使用它,而不是调用主脚本.


aph*_*ria 7

下面是一个非常简单的VB.NET程序,可以执行您想要的操作.

它将缓冲区设置为100个字符宽,1000个字符高.然后,它设置窗口的宽度以匹配缓冲区大小.

Module ConsoleBuffer
  Sub Main()
    Console.WindowWidth = 100
    Console.BufferWidth = 100
    Console.BufferHeight = 1000
  End Sub
End Module
Run Code Online (Sandbox Code Playgroud)

UPDATE

我将代码修改为首先设置Console.WindowWidth然后设置,Console.BufferWidth因为如果您尝试将Console.BufferWidth值设置为小于当前值,Console.WindowWidth则程序将引发异常.

这只是一个示例...您应该添加代码来处理命令行参数和错误处理.


roj*_*ojo 5

CMD有一个解决方案:使用从批处理脚本执行的powershell命令,有效地设置缓冲区高度,与窗口高度无关.这个解决方案让我可以独立于窗口大小调整现有批处理脚本窗口中的回滚缓冲区,这正是OP所要求的.

警告:它似乎使脚本忘记变量(或者至少它与我的脚本一样),所以我建议只在脚本的开头和/或结尾调用命令,否则你不依赖于会话局部变量.