連載
» 2018年10月04日 05時00分 公開

Tech TIPS:コマンドプロンプトの最大バッファリング行数を約3万2000行まで拡大する

コマンドプロンプトでは、表示された内容をいくらかバッファリングしており、画面の上方へスクロールして消えてしまったデータでも、スクロールバックすれば再確認したり、コピーしたりできる。だが最大でも1万行程度しかさかのぼれない。これを約3万2000行までバッファリング量を増やす方法を紹介する。

[打越浩幸,デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 7/Windows 8.1/Windows 10/Windows Server 2008 R2/Windows Server 2012/Windows Server 2012 R2/Windows Server 2016


コマンドプロンプトウィンドウの内容をスクロールバックして確認する

 コマンドプロンプトのウィンドウサイズ(表示できる行数や1行当たりの文字数)は、例えば80文字×25行(Windows 7のデフォルト)や120文字×30行(Windows 10のデフォルト)など、固定的なサイズになっている。これを超えるような表示が行われた場合は、その内容をスクロールバックして確認することになる。

最大バッファー行数を変更するには?

 コマンドプロンプトで最大何行までさかのぼって表示できるかはコマンドプロンプトの設定によるが、Windows OSのデフォルトでは300行や9000行に設定されている(OSのバージョンによってデフォルトの行数は異なる。Windows 7では300行だが、現在のWindows 10では9001行となっている)。

 このバッファー行数を変更するには、コマンドプロンプトの左上のアイコンを右クリックして、システムメニューから[プロパティ]を選択する。するとコマンドプロンプトのプロパティ画面が表示されるので、[レイアウト]タブで[画面バッファーのサイズ]にある[高さ]の値を変更すればよい。

プロパティ画面を開く プロパティ画面を開く
コマンドプロンプトのプロパティ画面を開くには、ウィンドウ左上にあるコマンドプロンプトアイコンを右クリックして、システムメニューを表示させ、[プロパティ]を選択する。

バッファー行数を設定する バッファー行数を設定する
スクロールバックできる行数は、画面バッファーの[高さ]で設定する。最大で9999まで設定できる。表示行数よりも少なくすると、表示行数の方も連動して減少する。

 この画面では、画面バッファーの行数(高さ)を最大で「9999」、つまり9999行まで増やすことができる。それ以上の値を設定することはできない(手動入力もできない)。

最大バッファー行数を、さらに増やすには?(約3万2000行まで拡大する方法)

 最大行数は約1万行まで拡大できるが、場合によってはこれでは不足することもあるだろう。手動で1万行もコマンドを入力することはないが、プログラムの実行結果やログなどをずっと表示させていると、すぐに超えてしまうことも多い。最大バッファー行数よりも古い表示内容は捨てられるので、後で参照できなくなる。

 このGUIのプロパティ設定画面では、行数を9999行よりも多くすることはできないが、実はコマンドプロンプト上で「mode」というコマンドを使うと、もう少し行数を増やすことができる。

 modeコマンドは、もともとはコンソールウィンドウの設定をしたり、通信ポート(COM:デバイス)やプリンタポート(LPT:デバイス)を設定したりするために用意されているコマンドである。ただしMS-DOS時代からある古いコマンドで、現在ではほとんど使うことはないだろう。

 だがこの中にコンソールの行と列のサイズを設定する機能があり、これを使うと、最大で約3万2000行まで拡大できる。Windows OSに付属する標準のコマンドなので、何も特別なツールなどをインストールしなくても、いつでもすぐに使えるのがメリットだ。具体的には次のように利用する。

mode con: lines=<行数>



 これを実行すると、「現在の」コマンドプロンプト(このmodeコマンドを実行しているコマンドプロンプトのウィンドウ)の行数を、指定された行数まで拡大できる。手元で試した限りでは、最大で3万2766行まで設定することができた(それ以上はエラーになる)。行数を指定せずに「mode con:」だけを実行すると、現在設定されている行数を確認できる(con:なしでmodeだけだと、通信ポートの状態も表示される)。

modeコマンドで最大バッファー行数を設定する modeコマンドで最大バッファー行数を設定する
「mode con:」でコンロール機能の設定を確認したり、表示したりできる。「lines=〜」で最大行数を設定する。このコマンドを使えば、32766行まで拡大できる。

 なお、modeコマンドで最大行数(画面バッファーの「高さ」の値)を変更すると、一時的にコマンドプロンプトウィンドウの実際の大きさ(先のプロパティ画面で「ウィンドウのサイズ」欄の「高さ」に表示されている値)も変更され、ほぼ画面いっぱいの高さまで拡大される(縦方向に最大化した状態になる)。必要に応じてリサイズ操作などを行っていただきたい。

コンソールの最大行数を確認する(1) コンソールの最大行数を確認する(1)
最大32766に設定したコンソールで、実際にどのくらいスクロールバックできるか確認してみよう。ここでは、forコマンドで1から32760までの数字を表示させてみる。

コンソールの最大行数を確認する(2) コンソールの最大行数を確認する(2)
上記のforコマンドの実行終了後、スクロールバックさせてみる。するとほぼ最初の位置までスクロールバックできた。つまり3万2000行以上のバッファーが有効になっている。

 PowerShellのコマンドウィンドウ(ISEではない方)も、このコマンドを使えば約3万2000行まで拡大できる。

 ただしコマンドプロンプトを開く前に(もしくはタスクバーに置いた起動前のコマンドプロンプトのアイコンに対して)、そのデフォルト値としてmodeコマンドで最大行数を設定しておくことはできない。必ず、起動後のコマンドプロンプト上で実行すること。

さらに多くの行数をバッファリングさせたい場合は?

 modeコマンドを使えば、最大1万行までだったバッファリングの行数を最大で3万2000行程度にまで拡大できる。だがもっと多くの行数をバッファリングし、データとして残しておきたければ、他の方法を考える必要がある。例えば次のような方法がある。

●ファイルへのリダイレクトの利用

 プログラムのログ出力や残しておきたい表示結果は、全てログファイルなどにリダイレクトさせる。そして、ログの内容を(WSLの)「tail -f」コマンドなどでリアルタイムに表示させると(TIPS「tailコマンドでログファイルをリアルタイムに監視する」、Linuxコマンド活用「【 head 】コマンド/【 tail 】コマンド」参照)、表示内容を確認しながらも、出力をファイルとして保存しておいたり、後で再利用したりできる。

●代替コンソールアプリの利用

 Windows OS標準のコマンドプロンプトの代わりをする「コンソール」アプリがいくつかある。Telnetのような端末/コンソールエミューレータだけでなく、開発環境やエディタなどのアプリケーションでもコンソール機能が付属しているものがある。それらを使うと、より多くの行数をバッファリングできるだけでなく、結果をテキストファイルへ保存する機能なども実現できる。

 これらについては、今後別TIPSで紹介する。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。