Copyコマンドには、ファイルがすでに存在する場合に自動的に置き換えるオプションがあることは知っていますが、ファイルがまだ存在しない場合にのみファイルをコピーする方法かどうかを知りたいです(/Y
)。 copyコマンドでワイルドカードを使用してソースからコピーするため、バッチコードの実際のファイル名がわかりません。
copy *.Zip c:\destination
自動上書きの代わりにこれが必要な理由は、ファイルが大きく、既存のものをスキップすると実行時間が大幅に節約されるためです。これはネットワーク共有を介して行われるため、この量のデータのコピーには時間がかかる場合があります...
追加情報:
これは、バックアップを実行してZipファイルをコンピューターから共有サーバーにコピーするバッチジョブです。何らかの理由でバッチジョブが終了しなかった場合(コピーされたZipファイルの一部のみ)、バッチを再度実行する必要がありますが、以前にコピーされていないZipファイルに対してのみです。
この問題は、robocopy
を使用し、/M
オプションを使用して、アーカイブフラグが設定されたファイルのみをコピーしてからクリアすることで解決されます。
robocopy /M *.Zip c:\destination
ウィキペディアのこの記事 では、これは実際にはアーカイブフラグが最初に意図されているものと非常に似ていることがわかります。
このコマンドは私のためにこれを解決しました:
XCOPY *.Zip /D C:\DESTINATION
echo n|xcopy "[source]" "[destinaton]"
特定の用途に合わせて調整するために、xcopyのさまざまな引数を確認してください
Robocopy-宛先にすでにあるファイルを自動スキップします
ROBOCOPY\some\folder c:\ destination * .Zip / S