競合を上書きせずにディレクトリをマージする


2

通常は重複しない2つのディレクトリ構造(AとB)があります。AをBにマージしたい

次のコマンドは、ディレクトリをマージします。

xcopy A B /E /Y

ただし、2つのディレクトリ間の競合を検出でき、ファイルが既に宛先(B)にある場合は上書きしません。xcopyはファイルを自動的に上書きします。競合(/ y)ごとにプロンプ​​トが表示されないようにします。xcopyを使用して、競合時にエラーを返します。

私は日付を気にしないので、/ Dオプションも機能しません。

これはxcopyでは不可能だと思います。他の解決策はありますか?

回答:


6

ROBOCOPYコマンドを使用して、宛先の既存のファイルと衝突しないすべてのファイルを移動できます。/L実際に何もせずに、結果をリストするオプションを追加しました。必要に応じて機能する場合は/L、ファイルを実際に移動するオプションを削除するだけです。

robocopy sourcePath destinationPath /mov /xc /xn /xo /xx /L

ROBOCOPYコマンドは、実行したすべてのアクションの素晴らしいログを生成します。上記のコマンドを使用するFiles :...と、サマリーの行を調べることにより、衝突によりファイルが移動されなかった時点を検出できます。コピーされた数が合計より少ない場合、衝突が発生します。

ROBOCOPYコマンドには、非常に強力な多くのオプションがあります。詳細を表示するには、コマンドプロンプトから入力するHELP ROBOCOPYROBOCOPY HELP、コマンドプロンプトから入力します。


0

ファイルを作成します。たとえば、dummy.txt fill istに次のNような行が含まれています。

N
N
N
N
N

コール XCOPY A B /E /-Y <dummy.txt >output.txt

質問を含むoutputfileの行は競合するファイルであり、上書きされませんでした。


賢い答え。私はこのようなものを自動化するのが好き、だけどロケールには注意してください:N[O]はどこにでも適用されないので、アクティブな言語が知られている場合にのみ使用されるべき先験的。😉
ヘルダーMagalhãesの
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.