バッチ ファイル内の環境変数で Windows コンソールの現在の幅を取得するにはどうすればよいですか?
6 に答える
Windowsの組み込みmode
コマンドを使用するアプローチが気に入っています。次のバッチファイルを試してください。
@echo off
for /F "usebackq tokens=2* delims=: " %%W in (`mode con ^| findstr Columns`) do set CONSOLE_WIDTH=%%W
echo Console is %CONSOLE_WIDTH% characters wide
これは、(スクロール可能な) ウィンドウのサイズではなく、コンソール バッファのサイズを返すことに注意してください。
Windows コンソールの高さが必要な場合はColumns
、findstr
式を に置き換えることができますLines
。繰り返しますが、ウィンドウではなくバッファの高さを返します...個人的には、履歴をスクロールバックできるように大きなバッファを用意するのが好きなので、行は通常約3000と報告されます:)
楽しみのために、出力をフィルタリングするために使用しないバージョンをfindstr
次に示します...(何らかの理由で)嫌いな場合に備えてfindstr
:
@echo off
for /F "usebackq tokens=1,2* delims=: " %%V in (`mode con`) do (
if .%%V==.Columns (
set CONSOLE_WIDTH=%%W
goto done
)
)
:done
echo Console is %CONSOLE_WIDTH% characters wide
これはすべて、Windows XP SP3 のさまざまなウィンドウ (実行中の FAR マネージャーを含む) ですべて試行されたことに注意してください。
これを試してください(言語/ロケール/ .netに依存しません):
@ECHO OFF
SET "ConsoleWidth="
SET /A LINECOUNT=0
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "tokens=1,2,*" %%A IN ('mode con') DO (SET /A LINECOUNT=!LINECOUNT!+1&IF !LINECOUNT! EQU 4 SET ConsoleWidth=%%B)
SETLOCAL DISABLEDELAYEDEXPANSION
SET "LINECOUNT="
ECHO ConsoleWidth: %ConsoleWidth% characters
Windows XP および Windows 7 でテスト済み (両方ともチェコ語)
Powershell の(Get-Host).UI.RawUI.WindowSize
プロパティは、現在のコンソール ウィンドウのサイズを設定または返します。for
次のようにループでキャプチャできます。
for /f %%I in ('powershell ^(Get-Host^).UI.RawUI.WindowSize.width') do set width=%%I
さて、これはpowershellをインストールする必要のないものです. .Net アプリケーションを作成、実行、および削除して、バッチ スクリプト変数を設定します。:)
@echo off
setlocal
pushd "%windir%\microsoft.net\"
for /f "delims=" %%I in ('dir /s /b csc.exe') do (
set csc=%%I
goto next
)
:next
popd
echo using System;>width.cs
echo class Width {>>width.cs
echo public static void Main() {>>width.cs
echo string m1 = "{0}";>>width.cs
echo Console.WriteLine^(m1, Console.WindowWidth^); } }>>width.cs
"%csc%" /out:width.exe width.cs >NUL 2>NUL
for /f %%I in ('width.exe') do set width=%%I
del width.exe width.cs
echo %width%
環境変数で取得することはできませんが、レジストリに保存されるため、バッチ スクリプトからアクセスできます。
それを変更する方法については、ここに回答があります: How to change Screen buffer size in Windows Command Prompt from batch script
reg.exe QUERY [key details]
同様に、の代わりに使用できますreg.exe ADD [details]
。詳細については、Technet のドキュメントを参照しHKCU\Console
てください。