web-dev-qa-db-ja.com

既存のファイルを上書きせずにxcopyを実行するバッチファイル

実行するにはプログラムが必要です:

xcopy s:\* z:\ /E

Xcopyを実行すると、ファイルを上書きする必要があるかどうかを確認するプロンプトが表示されるため、すべての場合にプロンプ​​トに対してnoと応答するようにバッチファイルを指定します。

どうすればこれを達成できますか?

23
Eae

私は自分でスイッチでこれをほとんど見落としていました。 Experts Exchangeの記事に助けられました。

重要なスイッチは次のとおりです。

/ D:m-d-y指定された日付以降に変更されたファイルをコピーします。日付が指定されていない場合、コピー元の時刻がコピー先の時刻よりも新しいファイルのみをコピーします。

「日付が指定されていない場合」の部分は特に重要です。これは、「既存のファイルを上書きせずに」という質問には正確に答えませんが、ソースファイルの既存のファイルのタイムスタンプが宛先ファイルよりも新しくない場合は答えます。

政府の仕事に十分近い。

26
Jeff Fischer

私は長年にわたって次のフラグを使用しています。あなたが質問で説明するすべての行動を達成するようです。

xcopy s:\ z:\ /S /Y /D

Sはその中のすべてのサブフォルダーとファイルをコピーしますYは上書きプロンプトを防ぎます

20
y-i_guy

xcopyは既存のファイルをスキップするように設定できないため、「robocopy」を使用してコピーする必要があります。

9
Martin Binder

これは私のために働く:

echo n|xcopy s:\* z:\ /E    
2
Aditya Agarwal

Y/n/allという質問を避けるために、次のようにechoコマンドを使用して「入力」をシミュレートできます。echo n | xcopy blabla ...

Xcopyを置き換えるcmdのより良い選択は、次のとおりです。robocopy source:destination:/ e [/ zb]

グラフィカルモードには、Windows Explorerのコピーをいくつかのオプション(一時停止、無視[すべて]、上書き[すべて]、最小化など)で上書きする "Teracopy"(googleを使用して検索)というアプリがあります。お勧めします。

1
hamacker

Windowsコマンドインタープリター:

for /f "delims=" %i in ('dir /b /s "source"') do (echo n | xcopy "%i" "destination"  [switches] /-y)

Windowsバッチ:

for /f "delims=" %%i in ('dir /b /s "source"') do (echo n | xcopy "%%i" "destination"  [switches] /-y)

ファイルのコピー/上書きを開始する前に、プロンプトが表示されることを忘れないでください

0
Arnold Lai