Windowsのコマンドラインは、「コマンドプロンプトウインドウ」とよばれるWindowsアプリケーション内で実行される。このウインドウはconhost.exeというプログラムだ。Windows 10では、conhost.exeやコマンドライン関連機能が強化されている。

 コマンドラインで利用するプログラムは、Windows内では、一般に「コンソールアプリケーション」と呼ばれる。自身では、ウインドウを持たず、標準入出力を利用して動作する。コンソールアプリの代わりにウインドウを作り、Windowsからキーやマウスイベントなどを受け取ってコマンドプログラム環境を作るのがconhost.exeだ。

 コマンドライン用プログラム(MS-DOSから慣習でいうと外部コマンド)は、標準入出力を利用してキーボード入力と画面出力を行う。しかし、Windows内部では、キー入力はウインドウに対して送られる「メッセージ」として処理され、画面出力にはWin32APIなどを使う。

 コマンドプログラムとWindows環境の仲立ちを行うのがconhost.exeで、これ自体はWindowsアプリケーション(デスクトップアプリ、クラッシックWindowsアプリ)になっている。「コマンドプロンプト」を起動すると、conhost.exe内でcmd.exeが動作する。また、コマンドライン用のプログラム(GUIを表示しないプログラム。コマンドプログラム、外部コマンドなどと呼ばれる)をエクスプローラーなどで直接起動してもconhost.exeがホストとなり、コマンドプログラムを実行する。

 ただし、この場合、コマンドの実行が終了するとウインドウが自動的に閉じてしまうため、通常は、コマンドプロンプトウインドウを開いて、cmd.exeの上でコマンドを実行させる。このときコマンドは、cmd.exeの子プロセスとして実行されるため、コマンドプログラムが実行したあとcmd.exeに戻ってくる。

 Windows 10のコマンドプロンプトにおいて、ユーザーから見て大きな改良点に[Ctrl]+[C]を含む、コントロール系ショートカットキーサポートがある。従来、コマンドラインでは、[Ctrl]+[C]をプログラム中断として利用していたこともあり、編集機能(コピー、切り取り、貼り付け)に、Windowsでは標準的なコントロールキー([Ctrl]+[C]または[X]または[V])を利用できなかった。

 しかし、Windows 10では、ウインドウ内のコマンド入力状態でこれらのコントロールキーが利用できる()。なお、プログラム実行を従来通り[Ctrl]+[C]で強制終了させることも可能だ。

表●コマンドプロンプトのキーボードショートカット
分類 動作 ショートカットキー
表示 コマンドプロンプトウインドウの透明度上げる [Ctrl]+[Shift]+[+]/
[Ctrl]+[Shift]+[ホイールアップ]
コマンドプロンプトウインドウの透明度下げる [Ctrl]+[Shift]+[-]/
[Ctrl]+[Shift]+[ホイールダウン]
最大化表示 [Alt]+[Enter]/[F11]
編集 貼り付け [Ctrl]+[V]/[Shift]+[INS]
コピー [Ctrl]+[C]/[Ctrl]+[INS]
カーソル位置から指定文字までコピー [F2]
EOF(^Z)の入力 [F6]
パスの補完 [Tab]
範囲選択モード 範囲選択モード(マークモード)に入る [Ctrl]+[M]
範囲選択モードを抜ける [Esc]
ライン/ブロック選択モードの切り替え [Alt]を押しながらカーソル操作
カーソル移動 カーソルキー
1画面分移動 [PageUp]/[PageDown]
画面バッファの先頭までカーソル移動 [Ctrl]+[Home]
画面バッファの最後までカーソル移動 [Ctrl]+[End]
テキスト選択 選択しながらカーソルを右に1文字移動 [Shift]+[←]
選択しながらカーソルを左に1文字移動 [Shift]+[→]
選択しながらカーソルを上に1行移動 [Shift]+[↑]
選択しながらカーソルを下に1行移動 [Shift]+[↓]
カーソル行の行末、右端まで選択 [Shift]+[End]
カーソル行でプロンプト手前、右端まで選択 [Shift]+[Home]
上に一画面分選択 [Shift]+[PageUp]
下に一画面分選択 [Shift]+[PageDown]
選択範囲を1語分拡張 [Ctrl]+[Shift]+[→]
画面バッファの先頭まで選択範囲を拡張 [Ctrl]+[Shift]+[Home]
画面バッファの最後まで選択範囲を拡張 [Ctrl]+[Shift]+[End]
1行すべて、もしくは画面バッファ全部を選択 [Ctrl]+[A]
ナビゲーション 画面全体を下スクロール [Ctrl]+[↑]
画面全体を上スクロール [Ctrl]+[↓]
検索 [Ctrl]+[F]
コンソールウィンドウを閉じる [Alt]+[F4]
上書き、挿入モードの切り替え [INS]
コマンド履歴 コマンド履歴を前に戻る [↑]/[F5]
コマンド履歴を後に進む [↓]
コマンド履歴リスト [F7]
コマンド履歴補完 [F8]
番号を指定してコマンド履歴実行 [F9]
コマンド履歴の先頭へ [PageUp]
コマンド履歴の最後へ [PageDown]
削除 入力をすべてキャンセル [Esc]
カーソル位置の1文字消去 [Del]
左側の入力文字を消して画面バッファの先頭へ [Ctrl]+[Home]
右側の入力文字を消して画面バッファの最後へ [Ctrl]+[End]
カーソル位置から指定文字まで削除 [F4]

 もう一つは、ウインドウとバッファサイズ関係が見直されたこと。Windows 8までは、コンソールへ出力を記憶するバッファ-とその一部を表示するウインドウサイズは独立した設定だった。画面に対して直接文字を出力していたMS-DOS時代から名残がまだあったということだ。

 イメージ的には、バッファーという大きな表示領域を固定されたサイズのウインドウからのぞき込むような動作だった。このため、ウインドウサイズは、バッファー幅よりも小さくすることはできても、大きくできなかった。