如何設置Windows默認命令行窗口大小和緩沖區大小
Windows 命令行 cmd 窗口系統默認的大小(80*40)對於現在的屏幕配置已經跟不上時代了,我們總是要把它改大些,而且緩沖區大小也想改得大大的。單純的為當前的 Windows 命令行窗口修改顯示大小和緩沖區大小就簡單了,右鍵命令行窗口標題,屬性裡改屏幕緩沖區和窗口大小就是,系統會為與當前標題相同的命令行窗口記住你的設置,比如 C:Windowssystem32cmd.exe。但是經常你又會打開不同標題的命令行窗口,如 Tomat,這時候它又是默認的 80*40 的窗口大小,又得改,再碰不同標題又要改。
於是能否直接修改系統默認的 cmd 窗口和它的緩沖區大小呢,以後碰到新的標題就參考於它。行的,方法是改注冊表。
先來看下你可以在命令行下直接指定命令行窗口的大小了,進到命令行執行 mode,可以看到關於控制台的信息如下:
Status for device CON:
----------------------
Lines: 2000
Columns: 120
Keyboard rate: 31
Keyboard delay: 1
Code page: 936
這是我的默認的控制台的大小是 2000 * 120,查看 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_USERConsoleScreenBufferSize 如果120*40 時值為 002a0078
屏幕緩沖區大小: HKEY_CURRENT_USERConsoleWindowSize 如 120*2000 時值為 07d00078
這是用的十六進制值來表示的,十六進制可以前加零來補齊為 8 位來理解.十六進制的前四位是高,後四位是寬,如:
002a0078 0078 的十進制是 120, 002a 的十進制是 40,窗口大小是 120*40
07d00078 00078 的十進制是 120, 07d0 的十進制是 2000, 緩沖區大小就是 120*2000
因為涉及到十六進制截斷成兩部分,所以你想直接轉換成十進制數來設置就意義不大了,比如 002a0078 的十進制數是 2752632,誰知道這個數與 120*40 有什麼關系呢!
如果覺得這樣對應起來算起來麻煩,那就想辦法從別處 copy 吧,對於直接命令 cmd 進入的窗口設置好你的窗口大小和屏幕緩沖區大小,注冊表裡會幫你在HKEY_CURRENT_USERConsole%SystemRoot%_system32_cmd.exe 下創建有你的兩個鍵值 WindowSize 和 ScreenBufferSize,把這兩值分別應用給
HKEY_CURRENT_USERConsoleWindowSize
HKEY_CURRENT_USERConsoleScreenBufferSize
就行啦,下次只要是進到命令行窗口時,默認就會應用這個大小。
知道個中原理,你想用什麼工具來修改注冊表的那兩值就隨你啦,可以是導出的 reg 文件,或是用下面兩條命令來把窗口大小和屏幕緩沖區大小分別改成 120*40 和 120*2000:
reg add "HKEY_CURRENT_USERConsole" /t REG_DWORD /v WindowSize /d 0x002a0078 /f
reg add "HKEY_CURRENT_USERConsole" /t REG_DWORD /v ScreenBufferSize /d 0x07d00078 /f
在 1280*1024 的屏幕分辨率下我比較喜歡設置的命令行窗口大小和屏幕緩沖區大小分別是: 130*42 和 130*2000,相應的命令就是:
reg add "HKEY_CURRENT_USERConsole" /t REG_DWORD /v WindowSize /d 0x002a0082 /f
reg add "HKEY_CURRENT_USERConsole" /t REG_DWORD /v ScreenBufferSize /d 07d00082 /f
我喜歡用 cmd 窗口的快速編輯模式,順便也把它打開,用命令:
reg add "HKEY_CURRENT_USERConsole" /t REG_DWORD /v QuickEdit /d 0x0000001 /f
以後記下前面三條 reg 命令就 OK 啦,沒什麼特殊的要求可以不用為某些標題對應的窗口單獨設置這些屬性了。比如你不需要為 C:Windowssystem32cmd.exe 單獨設置窗口的屬性就把注冊表的鍵 HKEY_CURRENT_USERConsole%SystemRoot%_system32_cmd.exe 刪除了事。