10. COPY コマンドを極める 

   10−1  CON について
   10−2  COPY CON file ・ COPY file CON
   10−3  ファイルの結合



10−1  CON について

CON という特別なファイル名があります。
これは「コンソール入出力」を意味します。つまり、キーボードからの入力と画面 への出力を一種の「ファイル」として扱う仕組みです。パイプとリダイレクトの話で 登場した「標準入出力」に付けられたファイル名と理解してもいいでしょう。

一般的なファイル CON
データを読み出す  キーボードからの入力
データを書き込む  画面(DOS窓)への出力

ファイル名 CON には、ちょっと便利な使い方がいくつかあります。


10−2  COPY CON file ・ COPY file CON

CON を COPY コマンドの引数に使うということは、
  COPY CON file …… キーボードからの入力をファイル file に保存
  COPY file CON …… ファイル file から取り出したデータを画面に出力
ということを意味します。この構文を使えば、小さなテキストファイルならエディタ なしで簡単に作成することができます。
(下の例の ^Z は [CTRL]+[Z]キーを入力します。[^][Z]ではありません。)

 D:\test>copy con ky.bat
 @echo off
 type test.txt
 ^Z                                   ← キー入力はここまで
         1 個のファイルをコピーしました。

 D:\test>ky                           ← ky.bat を実行します
 「プロンプトを使おう」サンプルファイル。

 D:\test>

上記の処理は、TYPEコマンドと出力のリダイレクト機能を組み合わせて 以下のように表現することもできます。

 D:\test>type con > ky.bat



10−3  ファイルの結合

COPY 送り側ファイル 受け側ファイル  において、送り側ファイルを複数指定、受け側ファイルを1つだけ指定すると、 いわゆるファイル結合を実現することができます。
送り側ファイルの表現形式は、ワイルドカード( *.txt など)を指定したり、 + を使って (例: test.txt+test2.txt+test3.txt ) 指定したりします。

 D:\test>copy *.txt tests.txt
 test.txt
 test2.txt
 test3.txt
         1 個のファイルをコピーしました。
          ↑ 結果が tests.txt に出力されました
 D:\test>type tests.txt
 「プロンプトを使おう」サンプルファイル。  ← test.txt の内容
 「プロンプトを使おう」サンプルファイル。  ← test2.txtの内容
 「プロンプトを使おう」サンプルファイル。  ← test3.txtの内容

 D:\test>