コマンド別解説

replace(バックアップ用コピー)

>>replaceのオプション簡易解説へ

目次

 

「replace」コマンドの使い方

「replace」は主にバックアップ用のコピーを行うときに用いられるコマンドです。使用方法は以下の通りです。

ここで注意したいのは、コピー元にはファイル名しか指定できず、反対にコピー先にはフォルダ名のみ指定できるという点です。

以下は、これを守らずにコマンドを実行したときのエラー例です。

replace(バックアップ用コピー)  「replace」コマンドのコピー

一つ目のエラーは、コピー元にフォルダを指定したことによるエラー、二つ目はコピー先にファイル名を指定したことによるエラーです。

 

基本的には「copy」コマンドと同様の使い方になりますが、「replace」コマンドを使用する場合は、必ずといっていいほど何らかのオプションを付けます。そうでないと、「copy」コマンドの代わりに「replace」コマンドを使う意味がありません。

良く使われる主なオプションとしては、以下のものがあります。

オプション無し   コピー先にファイルがある場合のみコピーする
/a   コピー先にファイルがない場合のみコピーする
/s   フォルダ内のサブフォルダのファイルをコピー対象とする
/u  新しくなったファイルだけをコピーする

次節からこれらについて詳しく説明します。

 

コピー先にファイルがある場合のみコピーする

「replace」コマンドではデフォルトの動作として、コピー先に同様のファイルがある場合のみコピーします

例として、「folder」フォルダ内の「file1.txt」、「file2.txt」、「file3.txt」ファイルを「copyfolder」フォルダ内にコピーすることを考えます。ただし、「copyfolder」フォルダには「file1.txt」ファイルが既に存在しているとします(以下にフォルダ構造を示す)。「file2.txt」ファイルおよび「file3.txt」ファイルは存在しません。

【コピー元】
folder
 ∟file1.txt
 ∟file2.txt
 ∟file3.txt

【コピー先】
copyfolder
 ∟file1.txt

 

「folder」フォルダ内全てのファイルを対象に「copyfolder」へのコピーを行うコマンド、

を実行すると(「\」は「\」に置き換えて下さい)、

replace(バックアップ用コピー)  「folder」フォルダ内全てのtxtファイルを「copyfolder」へコピー

のように、「file1.txt」ファイルのみがコピーされました。コピー先にファイルがない「file2.txt」と「file3.txt」はコピーされません。

逆に、コピー先にファイルがない場合のみコピーしたいときは、次節の「/a」オプションを使用します。

 

コピー先にファイルがない場合のみコピーする

コピー先に既にファイルがあり、それらは上書きしたくない場合に使用するオプションが「/a」です。このオプションを指定すると、コピー先に同名のファイルがないものについてだけコピーを実行することができます。

再び例として、「folder」フォルダ内の「file1.txt」、「file2.txt」、「file3.txt」ファイルを「copyfolder」内にコピーすることを考えます。ただし、「copyfolder」フォルダには「file1.txt」ファイルが既に存在しています。前節の例と同じです。

【コピー元】
folder
 ∟file1.txt
 ∟file2.txt
 ∟file3.txt

【コピー先】
copyfolder
 ∟file1.txt

 

この状態で、「/a」オプションを指定した「replace」コマンドを実行します。

すると、

replace(バックアップ用コピー)  「/a」オプションを付けた実行

と前節のオプション無しの場合とは逆に、「file2.txt」ファイルと「file3.txt」ファイルだけがコピーされました。

 

コピー先のサブフォルダ内のファイルもコピー対象とする

コピー先にあるサブフォルダ内のファイルもコピー対象としたい場合には「/s」オプションを用います。ただし、このオプションを使うのは少し複雑ですので慣れないと混乱するかもしれません。

以下では、実際にこのオプションの動作を見ていきましょう。例として「folder」フォルダに、

folder
 ∟file1.txt
 ∟file2.txt
 ∟file3.txt
 ∟subfile1.txt
 ∟subfile2.txt
 ∟subfile3.txt

計6個のファイルが入っているとします。これらを、「copyfolder」フォルダにコピーするとします。このとき、コピー先の「copyfolder」フォルダの構成は、

copyfolder
 ∟file1.txt
 ∟file2.txt
 ∟file3.txt
 ∟subfolder(フォルダ)
  ∟subfile1.txt
  ∟subfile2.txt
  ∟subfile3.txt

のように「copyfolder」の中にサブフォルダとして「subfolder」があり、それぞれのフォルダにはファイルが存在している状況を考えます。ファイルはすべてコピー元のファイル名と一致していますが、現在のフォルダとサブフォルダにそれぞれ3つずつ分かれている点が異なります。

 

オプション無しのコマンドを使用して、

と入力すると「copyfolder」フォルダ直下の「file1.txt」、「file2.txt」、「file3.txt」ファイルがコピーされましたが、サブフォルダ「subfolder」内の「subfile1.txt」、「subfile2.txt」、「subfile3.txt」ファイルはコピーされていません。

replace(バックアップ用コピー)  オプション無しの実行

 

次に、「/s」オプションを付けて、

とすると、以下のように「copyfolder」のサブフォルダである「subfolder」内のファイルまでコピーされていることが分かります。

replace(バックアップ用コピー)  サブフォルダ内のファイルを含めたコピー

注意すべきことは、コピー元のフォルダ構成とコピー先のフォルダ構成は必ずしも一致していないという点です。

コピー元では「folder」フォルダの下にすべてのファイルが存在しました。しかし、コピー先で更新されたファイルは「folder」フォルダ内の「file1~3.txt」ファイルと「folder\subfolder」フォルダ内の「subfile1~3.txt」ファイルです。

「/s」を使用するとコピー元にあるファイルをコピー先のサブフォルダまで含めた中から一致する名前を見つけ出して置き換えるのです。

 

更新されたファイルだけをコピーする

バックアップを取るとき、毎回全てのファイルをコピーしていては膨大な時間がかかってしまいます。そのようなときは「/u」オプションを指定して、前回から更新されたファイルだけをコピー対象とすればよいでしょう。

コピー対象を更新されたファイルに限定するオプション「/u」はバックアップ時に必須の機能です

 

さらに高度な「xcopy」コマンド

「replace」コマンドよりさらに高度な操作ができるようになったコピー操作に「xcopy」コマンドがあります。「xcopy」コマンドはコピーコマンドの中で最上位な機能を備えており、「replace」コマンドの機能は全て「xcopy」コマンドにも含まれています。

通常、「xcopy」コマンドの方が扱いやすいこともあり、高度なコピーを行いたい場合には「replace」コマンドよりも「xcopy」コマンドの方を使う場合が多いです。「xcopy」コマンドについては「xcopy(より高度なコピー) -コマンド別解説-」をご参照下さい。

 

Windowsバッチファイル初心者へ向けた入門書を作成しました


Windowsバッチファイル初心者の方へ向けた入門書(PDF)を作成しました。


・初めてWindowsバッチファイルを勉強してみようと思っている方

・使ったことはあるが一から基礎を学び直したい方


へ向けて丁寧な解説を行っています。


「全くプログラムを知らない方でも、この入門書を読んだ後には、Windowsバッチファイルの中級者レベルになれるように」をコンセプトに執筆したものです。


この本を読めば、バッチファイルを使ったファイルやフォルダの操作に関しては一通りのことができるようになります。そうなればもう十分中級者と呼べるレベルですので、あとは自分のやりたいことを実現しようとする中で徐々に知識を蓄えていくだけですぐに上級者へなれるでしょう。


詳しくみる

関連ページ

コメントを残す