我有一个关于MODE批处理命令的问题。使用批处理脚本获取命令窗口的行数和列数
以下代码允许我将控制台窗口大小调整为200行的10行。
mode con cols=200 lines=10
是否还有一种方法来读出当前设置的行数和列数?
所以,对于上述COL = 200条和线的示例= 10应返回。
任何答复表示赞赏。
我有一个关于MODE批处理命令的问题。使用批处理脚本获取命令窗口的行数和列数
以下代码允许我将控制台窗口大小调整为200行的10行。
mode con cols=200 lines=10
是否还有一种方法来读出当前设置的行数和列数?
所以,对于上述COL = 200条和线的示例= 10应返回。
任何答复表示赞赏。
生成代码的步骤:
一)使用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:\>
这种方法应该工作在任何区域(与语言无关):
@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%
这里是一个小的批处理文件,返回行和列的数量和存储它们的值%LINES%
和%COLS%
。反对@斯蒂芬的伟大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
有你自己尝试新鲜事物这么远?如果不是的话:一个好的起点是使用'/ F'语法来解析命令的输出 - for''for /?';请记住,SO不是一种编码服务......谢谢! – aschipfl
尝试不带参数的'mode'。使用'for'解析输出(aschimpfl已建议) – Stephan
我不是批处理专家。我已经搜索了互联网和批处理文档很长,没有发现任何用处。我会尝试你所建议的。只有启动模式是一个很好的提示,因为它似乎包含相关信息。因此解析它可能会导致解决方案。谢谢... – Rickson