2015-09-04 29 views
0

我有一個關於MODE批處理命令的問題。使用批處理腳本獲取命令窗口的行數和列數

以下代碼允許我將控制檯窗口大小調整爲200行的10行。

mode con cols=200 lines=10 

是否還有一種方法來讀出當前設置的行數和列數?

所以,對於上述COL = 200條線的示例= 10應返回。

任何答覆表示讚賞。

+0

有你自己嘗試新鮮事物這麼遠?如果不是的話:一個好的起點是使用'/ F'語法來解析命令的輸出 - for''for /?';請記住,SO不是一種編碼服務......謝謝! – aschipfl

+1

嘗試不帶參數的'mode'。使用'for'解析輸出(aschimpfl已建議) – Stephan

+0

我不是批處理專家。我已經搜索了互聯網和批處理文檔很長,沒有發現任何用處。我會嘗試你所建議的。只有啓動模式是一個很好的提示,因爲它似乎包含相關信息。因此解析它可能會導致解決方案。謝謝... – Rickson

回答

3

生成代碼的步驟:

一)使用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:\> 
+0

完美地工作。謝謝! – Rickson

+0

只是在另一臺電腦上試過。將'mode'替換爲'mode con'以僅爲控制檯設備(終端)輸出。 (除了控制檯列表中的線或列以外,沒有_my_設備,但誰知道 - 最好是精確的) – Stephan

0

這種方法應該工作在任何區域(與語言無關):

@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% 
0

這裏是一個小的批處理文件,返回行和列的數量和存儲它們的值%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