2008年05月27日

コマンドプロンプトのデバイスファイル

Windowsのコマンドプロンプトには「デバイスファイル」と言う特殊なファイルがあります。「デバイスファイル」とはどこかのディレクトリにあるファイルではなく、コンピュータのハードウェアデバイスを示すファイルです。「デバイスファイル」には「入力用デバイスファイル」と「出力用デバイスファイル」があり、以下のような機器が割り当てられています。

【入力用デバイスファイル】
con:Console(キーボード)
aux:Auxiliary(外部入出力:RS-232C、シリアルポート)
com1com9:(外部入出力:RS-232C、シリアルポート)

【出力用デバイスファイル】
con:Console(画面)
prn:Printer(プリンタ)
lpt1lpt9:Line Printer(プリンタ)
aux:Auxiliary(外部入出力:RS-232C、シリアルポート)
com1com9:(外部入出力:RS-232C、シリアルポート)
nul:Null(Null)

通常、「入力用デバイスファイル」には「con(キーボード)」、「出力用デバイスファイル」には「con(画面)」がデフォルト(標準)のデバイスとして割り当てられており、特に指定しなければ入出力はデフォルトのデバイスが使われます。このデフォルトの「デバイスファイル」のことを「標準入出力」と呼びます。ですから、普段コマンドを実行しても特に実行結果の出力先は指定しておりませんが、それは出力先に「con(画面)」を指定していることとイコールなのです。
C:\>cd \temp

C:\temp>dir
ドライブ C のボリューム ラベルは DISK-1-1 です
ボリューム シリアル番号は 7777-7777 です

C:\temp のディレクトリ

2008/05/26 23:59 <DIR> .
2008/05/26 23:59 <DIR> ..
2008/05/27 00:00 35 aaa.txt
2008/05/26 23:12 <DIR> test1
1 個のファイル 35 バイト
3 個のディレクトリ 4,610,236,416 バイトの空き領域

C:\temp>dir > con
ドライブ C のボリューム ラベルは DISK-1-1 です
ボリューム シリアル番号は 7777-7777 です

C:\temp のディレクトリ

2008/05/26 23:59 <DIR> .
2008/05/26 23:59 <DIR> ..
2008/05/27 00:00 35 aaa.txt
2008/05/26 23:12 <DIR> test1
1 個のファイル 35 バイト
3 個のディレクトリ 4,610,236,416 バイトの空き領域

C:\temp>
ですので、入出力の「デバイスファイル」を指定することによって、コマンドの実行結果を「con(画面)」ではなく「prn(プリンタ)」に出力して印刷したり、「aux(RS-232C)」に出力してシリアルケーブルで接続した別のコンピュータに出力することも出来ます。以下の例の場合、最初はファイル一覧を出力デバイスファイル「con(画面)」に出力、次に出力デバイスファイル「prn(プリンタ)」に出力します。
C:\temp>dir > con
ドライブ C のボリューム ラベルは DISK-1-1 です
ボリューム シリアル番号は 7777-7777 です

C:\temp のディレクトリ

2008/05/26 23:59 <DIR> .
2008/05/26 23:59 <DIR> ..
2008/05/27 00:00 35 aaa.txt
2008/05/26 23:12 <DIR> test1
1 個のファイル 35 バイト
3 個のディレクトリ 4,610,236,416 バイトの空き領域

C:\temp>dir > prn

C:\temp>
以下の例の場合、最初はテキストファイルaaa.txtの内容を出力デバイスファイル「con(画面)」に出力、次に出力デバイスファイル「prn(プリンタ)」に出力します。
C:\temp>type aaa.txt > con
11111
22222
33333
44444
55555

C:\temp>type aaa.txt > prn

C:\temp>
以下の例の場合、最初はテキストファイルaaa.txtをテキストファイルbbb.txtにコピー、次にテキストファイルaaa.txtを出力デバイスファイル「con(画面)」に出力、次に出力デバイスファイル「prn(プリンタ)」に出力します。
C:\temp>dir
ドライブ C のボリューム ラベルは DISK-1-1 です
ボリューム シリアル番号は 7777-7777 です

C:\temp のディレクトリ

2008/05/26 23:59 <DIR> .
2008/05/26 23:59 <DIR> ..
2008/05/27 00:00 35 aaa.txt
2008/05/26 23:12 <DIR> test1
1 個のファイル 35 バイト
3 個のディレクトリ 4,610,670,592 バイトの空き領域

C:\temp>copy aaa.txt bbb.txt
1 個のファイルをコピーしました。

C:\temp>dir
ドライブ C のボリューム ラベルは DISK-1-1 です
ボリューム シリアル番号は 7777-7777 です

C:\temp のディレクトリ

2008/05/27 23:06 <DIR> .
2008/05/27 23:06 <DIR> ..
2008/05/27 00:00 35 aaa.txt
2008/05/27 00:00 35 bbb.txt
2008/05/26 23:12 <DIR> test1
2 個のファイル 70 バイト
3 個のディレクトリ 4,610,670,592 バイトの空き領域

C:\temp>copy aaa.txt con
11111
22222
33333
44444
55555
1 個のファイルをコピーしました。

C:\temp>copy aaa.txt prn
1 個のファイルをコピーしました。

C:\temp>
最後に、出力デバイスファイル「nul(Null)」についてですが、「nul(Null)」は特殊な出力デバイスファイルで、ここに出力した内容はどこにも出力されずに消えます。
C:\temp>type aaa.txt > con
11111
22222
33333
44444
55555

C:\temp>type aaa.txt > nul

C:\temp>
デバイスファイル」は最初は取っつきにくいかも知れませんが、慣れるとなかなか使えます。上手く活用しましょう。

posted by 公爵 at 23:20| Comment(0) | TrackBack(0) | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/98214092
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。