web-dev-qa-db-ja.com

XCopyにファイルをコピーさせ、存在する場合は前のファイルを上書きしない(プロンプトなしで)

ファイルをコピーするために、リモートコンピューターにコマンドを送信しています。ファイルをコピーしたいが、以前のファイルを同じ名前で上書きしたくない場合(存在する場合)。また、プロンプトなしでコマンドを実行する必要があります(xcopyは、指定したターゲット名がファイルまたはディレクトリであるかどうかを確認し、ファイルの上書きについても確認します)。

21
Vic

私の知る限り、上書きしないようにする方法はありません。/Yは上書きします。/Iはfile/dictプロンプトを取り除きます。見る xcopy /?すべてのオプション

3
Cine

xcopy /dで良い結果が得られました。

NEWERファイルをコピーします。既存のファイルに同じタイムスタンプがあると想定できるため、存在しないファイルのみをコピーします。

53

誰かがこれを見つけた場合に備えて:robocopy x:\ sourcefolder Y:\ destfolder/s/e/r:0/z

xcopyよりもはるかに優れており、最後に失敗したファイルやスキップされたファイルを通知するテーブルを提供します。上書きしないように要求しません。

21
wellspokenman

Replaceコマンドを使用することもできます。 2つのモードがあります。そこに存在しないファイルを追加するか、存在するファイルを置き換えるためです。前のモードが必要です:

replace <path1> <path2> /A
3
potes

まあ、特定の救済策があります!製品デモのセットアップを作成する際に、Win10での労力と時間の多くを節約できました。

パイピングを使用してみてください:

@ ECHO N | COPY/-YSourceFiles宛先

例として、このコードを使用して、静かで安全できれいなコピーを作成しました!

@FOR /D %%F in ("FooPath") DO @(
   @ECHO N|COPY /-Y ^"%%~npdxF\*.*^" ^"GooPath^" 3>NUL 2>NUL >NUL
)

ここで、明らかにFooPathはソースであり、GooPathは宛先です。

楽しい!

(主なソース: https://ss64.com/nt/copy.html

3
Sina

ファイルをコピーして名前を変更する必要があったため、ファイルまたはディレクトリの作成に関するプロンプトが表示されました。

これは、私がやった「ハック的な」方法です。

ECHO F | XCOPY /D "C:\install\dummy\dummy.pdf" "C:\Archive\fffc810e-f01a-47e8-a000-5903fc56f0ec.pdf"

XCOPYは、「F」を使用して、ターゲットをファイルとして作成する必要があることを示します。

C:\install>ECHO F   | XCOPY /D "C:\install\dummy\dummy.html" "C:\Archive\aa77cd6e-1d19-4eb4-b2a8-3f8fe60daf00.html"
Does C:\Archive\aa77cd6e-1d19-4eb4-b2a8-3f8fe60daf00.html specify a file name or directory name on the target
(F = file, D = directory)? F
C:\install\dummy\dummy.html
1 File(s) copied

また、このコマンドで既存のファイルをそのままにしておくことも確認しました。 (あなたもすべき :-)

1
Erk

次のコマンドは、ファイルとフォルダーをコピーしますが、ファイルが既に存在する場合はオーバーライドしません。

xcopy "*.*" "C:\test\"  /s /y /d
0
rajesh