2011年2月9日水曜日

REPLACE = ファイルを置き換える(= 差分コピーする) - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連
○Windows XP
指定したファイルを置き換えます。(= 差分コピーします。)

o 指定したファイルに対して、次の事が出来ます。
    + 増えたファイルをコピーする
    + 同じ名前のファイルを上書きコピーする
    + 更新日時が新しくなったファイルだけを上書きコピーする
o フォルダーはコピーしません。必要な時は、XCOPY コマンドなどと併用します。


**** 書式
--------
replace [ オプション ] コピーしたいファイル名 [ コピー先の場所 ]
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
o オプション = 次のオプションを指定出来ます。
    + /a = コピー先に無いファイルだけを、コピーします。
    + /u = コピー先のファイルの更新日付が古い時だけ、上書きコピーします。
        + 但し、コピー先に読み取り専用属性の付いたファイルがあると、コピーに失敗してエラーになります。
        + ですので、自動実行では /r オプションとの併用がおすすめです。
        + /a オプションと一緒に指定する事は出来ません。
    + /s = コピー先のサブフォルダーにある同名ファイルも、置き換え対象にします。
        + 階層のコピーではありません。使い所に注意します。
        + /a オプションと一緒に指定する事は出来ません。
    + /p = 置き換える前に「置き換えますか」と質問します。
        + 1つずつ質問します。沢山コピーする時に指定すると、大変です。
    + /r = コピー先のファイルに読み取り専用属性が付いていても、コピーします。
    + /w = メッセージ「続行するときは何かキーを押してください...」を出して、一旦停止します。
        + ヘルプによると、ディスクを入れ替れてもらう時に使う機能、との事です。
    + オプションの指定が無い時、コピー先の場所にもあるファイルのみ、上書きコピーします。
        + 但し、コピー先に読み取り専用属性の付いたファイルがあると、エラーになります。
        + ですので、自動実行では /r オプションとの併用がおすすめです。
o ファイル名 = コピーしたいファイル名です。
    + ファイルの場所とファイル名を「\」でつなぎます。
    + 今居る場所からの相対パスも指定出来ます。
    + ファイル名部分の指定には、ワイルドカード(「*」や「?」)を使用出来ます。
    + なお、このコマンドでは、「\」の代わりに UNIXの区切り文字「/」を使う事は、出来ません。
o 移動先の場所 = 移動先のフォルダーのパスを指定します。
    + 省略すると、移動先の場所はカレントディレクトリになります。
    + ファイル名まで指定すると、エラーになります。
    + 「\」の代わりに UNIXの区切り文字「/」を使う事は、出来ません。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = 成功
    + 「置き換えるファイルはありません」
o 2 = エラー。ファイルが見つからない時
    + 「ファイルが見つかりません - dir1」 = 「\」の代わりに UNIXの区切り文字「/」を使っていると、このエラー、もしくは 11番エラーになります。
o 3 = エラー。フォルダーが見つからない時
    + 「パスが見つかりません」 = コピー元やコピー先のフォルダーが見つかりませんでした。
o 5 = エラー。アクセス拒否
    + 「アクセスは拒否されました - (ファイル名)」「置き換えるファイルはありません」 = コピー先のファイルに読み込み専用属性が付いている場合は、 /R オプションを付けるとコピー出来ます。
o 11 = エラー。オプションの指定誤り
    + 「無効なスイッチです - /*」 = オプションが間違っています。
    + 「無効なパラメータの組み合わせです」 = /A と /U、もしくは/A と /S を同時に指定してはいけません。


**** 使用例
o 「私の」で始まる名前のファイルを、c:\ミクさん に差分バックアップします。
--------
replace /a /r 私の* c:\ミクさん
replace /u /r 私の* c:\ミクさん
--------

    + コマンド名は、大文字で書く事も出来ます。
    + 新しく作ったファイルは、/A オプションでコピーします。
    + 更新したファイルは、/U オプションでコピーします。
    + なお、上記コマンドは、サブフォルダーまではバックアップしません。



**** 機能
o 指定したファイルを差分コピーします。
    + 増えたファイルをコピーする機能
    + 同じ名前のファイルを上書きコピーする機能
    + 更新日時が新しくなったファイルだけを上書きコピーする機能

** ファイル属性について
o REPLACE コマンドは、ATTRIB コマンドで設定出来る全てのファイル属性に対応しています。
    + 読み取り専用属性
    + アーカイブ属性
    + システムファイル属性
    + 隠しファイル属性
o 但し、上書き更新する時は、/R を付ける事をおすすめします。
o /R オプションを指定しない場合、コピー先に読み取り専用属性のファイルがあると、上書き出来ずに REPLACE コマンドが終了してしまうからです。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > DEL = ERASE = ファイルを削除する
    ASSOC = ファイルの拡張子に関連付ける名前(= ファイルタイプ)を表示、変更する
    ATTRIB = ファイル属性を表示、変更する
(2011年2月20日追加。機能欄にて、ファイル属性について)