是否可以在 Windows 中获取当前 CMD 窗口大小(行和列)?

Hub*_*bro 4 windows command-line

在 Windows CMD 中,我可以键入命令mode con /status来查看 CMD 当前的行和列显示限制。是否可以以类似的方式计算出 CMD 窗口当前可以容纳多少行和列?mode显示适合缓冲区内的行数和列数,但我需要适合CMD 窗口内可见的行数和列数。换句话说,我正在寻找 Unix 命令tput colstput lines.

dbe*_*ham 5

PowerShell 可以轻松访问许多控制台属性:

C:\>powershell -command "&{$H=get-host;$H.ui.rawui;}"


ForegroundColor       : Gray
BackgroundColor       : Black
CursorPosition        : 0,179
WindowPosition        : 0,131
CursorSize            : 25
BufferSize            : 2000,3000
WindowSize            : 144,49
MaxWindowSize         : 200,85
MaxPhysicalWindowSize : 200,85
KeyAvailable          : False
WindowTitle           : Command Prompt - powershell  -command "&{$H=get-host;$H.ui.rawui;}"
Run Code Online (Sandbox Code Playgroud)

我确信 powershell 中有一种简单的方法可以获取您想要的值,但我是 PowerShell 的新手。所以我将使用旧的命令行实用程序。

C:\>powershell -command "&{$H=get-host;$H.ui.rawui;}"|findstr /b WindowSize
WindowSize            : 144,49
Run Code Online (Sandbox Code Playgroud)

如果您需要批处理脚本中的值,则 FOR /F 可以为您解析这些值:

@echo off
setlocal
for /f "tokens=3,4 delims=, " %%A in (
  'powershell -command "&{$H=get-host;$H.ui.rawui;}"^|findstr /b WindowSize'
) do set /a windowWidth=%%A, windowHeight=%%B
Run Code Online (Sandbox Code Playgroud)

或者您可以学习 PowerShell 并使用更强大的脚本语言完成整个工作。