我有一個關於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