Programming Field

CON (コンソール) - DOS コマンド一覧

スポンサーリンク

「CON」はデバイスファイル名の一種で、コンソール(標準入出力)を表します。通常、出力先として使った場合は画面出力、入力元として使った場合はキーボード入力となります。

Linux系における「/dev/console」に概ね一致します(ただし概念が異なる面があるため完全に一致するとは言い切れません)。

解説

通常はファイル名を指定すべき場所に「CON」という名前を用いると、ファイルの内容の代わりにコンソールの内容を入力元または出力先として利用することができるようになります。具体的には、ファイル読み込みを行うようなプログラムに対してファイル名として「CON」を用いると、コンソール上で入力待ちとなり、その入力が完了(※)すると入力した内容が「読み取ったファイルの内容」として利用されることになります。また、ファイル以外の出力先が指定できないプログラムでも「CON」を用いればコンソールに内容を出力させることができます。

※ 「コンソール入力の完了」は原則として「EOF文字のみが入力されたかどうか」で決まります。改行を入力しても入力完了とはならず、必ず何も入力していない行で「EOF文字」(Ctrl+Z)と改行を入力することで初めて入力完了することができます。

なお、通常はコンソールを用いないGUIアプリケーションなどでは、ファイルの入出力に対して「CON」を用いることはできません。また、コンソールアプリケーションであっても、入力元または出力先として「CON」を利用できない場合があります。例として、Moreは引数にCONを指定することができません(ただしMoreの場合入力リダイレクト経由での利用は可能である上、引数を省略してリダイレクトやパイプも用いない場合は実質CONが利用されます)。

※ 他のデバイスファイルも同様ですが、存在するディレクトリ名を付け、あたかもそのディレクトリ内に存在するファイルとして「CON」を用いた場合(例: 「C:\Windows\CON」)でも、その入出力はコンソールが使用されます。このこともあってか、「CON」はシステムによって予約された名前であり、ファイル名・ディレクトリ名として「CON」を用いることはできません。
※ 「CON」を用いた場合は必ずコンソールに対する入出力として働きます。例として、出力先として「CON」を利用しつつ、さらに出力リダイレクトパイプを用いて出力内容を受け渡す、といったことはできません。(「for /F」でキャプチャーすることもできません。)

サンプル1

type CON > save.txt

Typeコマンドは引数として入力元となるファイル名を要求し、入力した内容をそのまま出力します。そこで「CON」を指定することでキー入力を要求し、出力先を「save.txt」にすることで、キーで入力した内容を持つファイルを作成することができます。

サンプル2

echo test > CON

画面に「test」を出力します。(通常のプロンプトでは出力先は「CON」となるため、敢えて上記のように指定する必要はありません。)