コマンドプロンプトでは、表示された内容をいくらかバッファリングしており、画面の上方へスクロールして消えてしまったデータでも、スクロールバックすれば再確認したり、コピーしたりできる。だが最大でも1万行程度しかさかのぼれない。これを約3万2000行までバッファリング量を増やす方法を紹介する。
対象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行まで増やすことができる。それ以上の値を設定することはできない(手動入力もできない)。
最大行数は約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コマンドで最大行数(画面バッファーの「高さ」の値)を変更すると、一時的にコマンドプロンプトウィンドウの実際の大きさ(先のプロパティ画面で「ウィンドウのサイズ」欄の「高さ」に表示されている値)も変更され、ほぼ画面いっぱいの高さまで拡大される(縦方向に最大化した状態になる)。必要に応じてリサイズ操作などを行っていただきたい。
PowerShellのコマンドウィンドウ(ISEではない方)も、このコマンドを使えば約3万2000行まで拡大できる。
ただしコマンドプロンプトを開く前に(もしくはタスクバーに置いた起動前のコマンドプロンプトのアイコンに対して)、そのデフォルト値としてmodeコマンドで最大行数を設定しておくことはできない。必ず、起動後のコマンドプロンプト上で実行すること。
modeコマンドを使えば、最大1万行までだったバッファリングの行数を最大で3万2000行程度にまで拡大できる。だがもっと多くの行数をバッファリングし、データとして残しておきたければ、他の方法を考える必要がある。例えば次のような方法がある。
プログラムのログ出力や残しておきたい表示結果は、全てログファイルなどにリダイレクトさせる。そして、ログの内容を(WSLの)「tail -f」コマンドなどでリアルタイムに表示させると(TIPS「tailコマンドでログファイルをリアルタイムに監視する」、Linuxコマンド活用「【 head 】コマンド/【 tail 】コマンド」参照)、表示内容を確認しながらも、出力をファイルとして保存しておいたり、後で再利用したりできる。
Windows OS標準のコマンドプロンプトの代わりをする「コンソール」アプリがいくつかある。Telnetのような端末/コンソールエミューレータだけでなく、開発環境やエディタなどのアプリケーションでもコンソール機能が付属しているものがある。それらを使うと、より多くの行数をバッファリングできるだけでなく、結果をテキストファイルへ保存する機能なども実現できる。
これらについては、今後別TIPSで紹介する。
Copyright© Digital Advantage Corp. All Rights Reserved.