用命令行设置 Windows 命令行窗口大小和缓冲区大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用命令行设置 Windows 命令行窗口大小和缓冲区大小相关的知识,希望对你有一定的参考价值。

背景:使用命令行来修改windows 命令行窗口了的大小和屏幕缓冲区的大小(宽度和高度)

方法:方法是改注册表。

先来看下你可以在命令行下直接指定命令行窗口的大小了,进到命令行执行 mode,可以看到关于控制台的信息如下:

设备状态 CON:
---------
    行:        300
    列:       80
    键盘速度:   31
    键盘延迟:  1
    代码页:     936

这是我的默认的控制台的大小是 300 * 80,查看 mode 命令的使用,用 mode /? 关于显示模式的修改提示是:

Display mode:      MODE CON[:] [COLS=c] [LINES=n]

于是可以用命令 mode con cols=120 lines=40    或 mode 120,40 来修改窗口大小为 120*40,

窗口大小是被改成了你想要的 120*40, 可是悲催的是屏幕缓冲区的大小也变成了 120*40,这让你无法追溯屏幕打印的历史,也就是说 mode 对于窗口大小和屏幕缓冲区大小不能单独设置。

如果启动 cmd.exe 时同时指定窗口大小为 120*40,可以用参数 /k,完整命令是:

cmd /k "mode con:cols=120 lines=40"   或 cmd /k "mode 120,40"


终极的办法就是修改注册表,先要知道保存系统默认的 cmd 命令窗口的屏幕缓冲区大小的两个键值分别是:

窗口大小:               HKEY_CURRENT_USER\Console\WindowSize 
屏幕缓冲区大小:     HKEY_CURRENT_USER\Console\ScreenBufferSize  
     

这是用的十六进制值来表示的,十六进制的前四位是高,后四位是宽(高*宽),如:

002a0078      0078 的十进制是 120, 002a 的十进制是 40,窗口大小是 40*120

07d00078      0078 的十进制是 120, 07d0 的十进制是 2000, 缓冲区大小就是  2000*120


注册表里会帮你在 HKEY_CURRENT_USER\Console\ 下创建有你的两个键值 WindowSize 和  ScreenBufferSize,把这两值分别应用给

HKEY_CURRENT_USER\Console\WindowSize
HKEY_CURRENT_USER\Console\ScreenBufferSize


下次只要是进到命令行窗口时,默认就会应用这个大小

知道个中原理,你想用什么工具来修改注册表的那两值就随你啦,可以是导出的 reg 文件,或是用下面两条命令来把窗口大小和屏幕缓冲区大小分别改成 120*40 和  120*2000:

1

2

reg add "HKEY_CURRENT_USER\Console" /t REG_DWORD /v WindowSize /d 0x002a0078 /f

reg add "HKEY_CURRENT_USER\Console" /t REG_DWORD /v ScreenBufferSize /d 0x07d00078 /f


参考:http://unmi.cc/save-windows-command-size/, 来自 隔叶黄莺 Unmi Blog


本文出自 “7088733” 博客,请务必保留此出处http://7098733.blog.51cto.com/7088733/1775277

以上是关于用命令行设置 Windows 命令行窗口大小和缓冲区大小的主要内容,如果未能解决你的问题,请参考以下文章

用命令行设置powershell 屏幕缓冲区大小

命令跳出的 Windows 命令行窗口中文路径乱码,怎么解决

.bat 设置字体大小 - Windows 命令行

linux 命令行 缓冲区太小怎么办

Windows API关于窗口缓冲区

windows下cmd命令行显示UTF8字符设置(CHCP命令)