使用批处理脚本获取命令窗口的行数和列数

时间:2015-09-04 07:06:50

标签: batch-file cmd

我对MODE批处理命令有疑问。

以下代码允许我将控制台窗口的大小调整为10行,每行200个字符。

mode con cols=200 lines=10

是否还有一种方法可以读出当前设定的行数和列数?

因此,对于上面的例子,应该返回 col = 200 lines = 10

感谢任何回复。

4 个答案:

答案 0 :(得分:4)

按步骤构建您的代码:

a)使用mode获取所需数据。

mode

a1)仅获取所需设备的输出:

mode con

b)过滤“列”和“行”以消除不需要的信息:

mode con|findstr "Zeilen Spalten" 

c)使用for /f来解析命令的输出并设置变量。查看输出的结构并找到合适的标记和分隔符:

for /f "Tokens=1,2 delims=: " %%a in ('mode con^|findstr "Zeilen Spalten"') do set %%a=%%b

将“Zeilen”和“Spalten”改编为mode的输出(取决于语言)

C:\>mode con

Status von Gerät CON:
---------------------
    Zeilen:          300
    Spalten:         120
    Wiederholrate:   31
    Verzögerungszeit:1
    Codepage:        850


C:\>for /f "tokens=1,2 delims=: " %a in ('mode con^|findstr "Zeilen Spalten"') do @echo set %a=%b
set Zeilen=300
set Spalten=120

C:\>

答案 1 :(得分:1)

此方法应适用于任何语言环境(不依赖于语言):

@echo off
setlocal

set "lines="
set "cols="
for /F "tokens=2 delims=:" %%a in ('mode con') do for %%b in (%%a) do (
   if not defined lines (
      set "lines=%%b"
   ) else if not defined cols (
      set "cols=%%b"
   )
)
echo cols=%cols% lines=%lines%

答案 2 :(得分:1)

这是一个小批处理文件,它返回行数和列数,并分别将它们的值存储到%LINES%%COLS%。反对@ Stephan的伟大answer提供直接在命令提示符下输入的单行程序,此脚本不依赖于系统语言):

@echo off

set LINES=
set COLS=
for /F "skip=2 tokens=2 delims=: " %%L in (
  'mode CON:'
) do (
  if defined LINES (
    set COLS=%%L
    goto :QUIT
  ) else (
    set LINES=%%L
  )
)
:QUIT
echo %LINES% lines, %COLS% columns

答案 3 :(得分:1)

别忘了/ a参数来跳过前面的空格并获取数字

set "_LINES="
set "_COLS="

for /f "tokens=2 delims=:" %%a in ('mode con') do (
    echo Second token: %%a
    if defined _LINES (
        set /a "_COLS=%%a"
        goto END_MODE_CON
    ) else (
        set /a _LINES=%%a
    )
)

:END_MODE_CON
echo Lines: %_LINES%, columns: %_COLS%