我对MODE批处理命令有疑问。
以下代码允许我将控制台窗口的大小调整为10行,每行200个字符。
mode con cols=200 lines=10
是否还有一种方法可以读出当前设定的行数和列数?
因此,对于上面的例子,应该返回 col = 200 和 lines = 10 。
感谢任何回复。
答案 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%