ファイルのコピー

ファイルやディレクトリはcopyコマンドでコピーできます。

copy コピー元 コピー先

コピー元にはコピーするファイルやディレクトリのパスを、コピー先にはファイルやディレクトリのコピー先を指定します。コピー元とコピー先がファイル名である場合、指定されたファイルを新しいファイル名でコピーします。コピー元とコピー先がディレクトリである場合、指定したディレクトリ内のファイルをコピーします。

サンプル 03

@echo off

copy test.txt copy1.txt
copy test.txt copy2.txt
copy test.txt copy3.txt

pause

実行結果

サンプル03は、カレントディレクトリ内にあるtest.txtファイルを、同じディレクトリ内にcopy1.txt、copy2.txt、copy3.txtの3つのファイルにコピーします。このように、バッチプログラムを使ってファイル単位でコピーを取れば、バックアップ作業を自動化するできます。ifコマンドなどと組み合わせることで、ファイルのコピー条件などを細かく設定できます。

1回のcopyコマンドで複数のファイルをコピーすることも可能です。このとき、コピー元のファイルを複数指定することができますが、コピー先は常に1つして選択できません。複数のコピー元を指定するには + 記号でパスを区切ります。

copy コピー元 + コピー元 + ... コピー先

このときファイルが個別にコピーされるのではなく、コピー元に指定されたファイルの順で結合されコピーされます。

サンプル 04

@echo off

copy test1.txt + test2.txt + test3.txt copy.txt

pause

実行結果

サンプル04は、test1.txt、test2.txt、test3.txtの3つのテキストファイルをcopy.txtファイルにまとめてコピーしています。この結果、これら元のファイルのテキストが順に結合されcopy.txtに保存されます。このようにcopyコマンドは、単純なファイルのコピーだけではなく分割されたファイルの結合にも応用できます。

ファイルの削除

ディレクトリごとの削除はrmdirで行えましたが、ファイルを個別に削除するには、delコマンドまたはeraseコマンドを使います。どちらのコマンドも、コマンド名が異なるだけで効果は同じです。

del ファイル名
erase ファイル名

これらのコマンドのパラメータには、削除するファイルのパスを指定します。指定したファイルが存在しない場合はエラーメッセージが表示されます。

サンプル 05

@echo off

if exist copy1.txt (
    del copy1.txt
    echo copy1.txt を削除しました
) else echo copy1.txt が見つかりません
if exist copy2.txt (
    del copy2.txt
    echo copy2.txt を削除しました
) else echo copy2.txt が見つかりません
if exist copy3.txt (
    del copy3.txt
    echo copy3.txt を削除しました
) else echo copy3.txt が見つかりません

pause

実行結果

サンプル05は、カレントディレクトリ内にあるcopy1.txt、copy2.txt、copy3.txtファイルを削除します。ifコマンドで対象のファイルがあるかどうかを調べ、ファイルが存在すればdelコマンドで削除し、見つからなければファイルが見つからないことを通知するメッセージを表示します。