ディレクトリを再帰的にコピーするバッチファイル


121

.batファイル内のディレクトリを再帰的にコピーする方法はありますか?もしそうなら、例は素晴らしいでしょう。ありがとう。


2
あなたはxcopy / sを意味しますか?またはより高度なロボコピー?
rene、

あなたは簡単に代わりにコピーするために変更することができ、この削除が、これは、あなたを助けるかもしれないdaniweb.com/web-development/threads/61479/...
ジョルジュChitiga

回答:


176

ファイルとサブディレクトリを再帰的にコピーするxcopy調べます。

ページの下に2/3の例があります。特に役立つのは:

ドライブAからドライブBにすべてのファイルとサブディレクトリ(空のサブディレクトリを含む)をコピーするには、次のように入力します。

xcopy a: b: /s /e


16
/ yフラグも含めて、「既存の宛先ファイルを上書きするかどうかを確認するプロンプトを表示しない」ようにすることもできます。
マシューロック14

11
'xcopy'は、メモリ不足エラーで有名であるため、あまりお勧めできません。'robocopy'を使用してみてください
Rahul

6
@Rahulうーん本当に?私はそれを見たことがありませんが、xcopy 確かに暗黒時代から存在しています。おそらくCopy-Item -Recurse代わりにPowerShellでも実行できます。
lc。

1
残念ながら、この動作は非常に一般的です:)。特にギグデータのように大量のデータをコピーしたい場合は、これが繰り返し発生しているのを見ている場合。
Rahul

10
これは、xcopyが非推奨になり、robocopyを使用する必要があることを示しています。
Mike HR、

71

受け入れられた回答のコメントを読んだ後、私は(Windows 7 64ビットSP 1の標準のコマンドプロンプトを使用して)機能したrobocopyコマンドを試しました。

robocopy source_dir dest_dir /s /e

5
「robocopy」がWindows 7に組み込まれたコマンドであることを決して知らない!答えをありがとう、とても親切で強力:)
Anmol Saraf

5
/E意味しません/Sか?copy subdirectories, including Empty ones.
mbomb007

4
うーん/S/ERobocopyをに従って反対の事を暗示しているように見える/?ヘルプ- S e「が空のもの」である「空のものではない」です。一つだけ選ぶべきだと思います。
スチュアートブロック

1
ほとんどのユーザーにとっては、/ e(空のディレクトリを含む)を実行するだけで十分だと思います。
phsource

3
robocopy1つ以上のファイルが正常にコピーされた場合は、終了コード1 を返すことに注意してください。
dougnorton

15

バッチで再帰アルゴリズムを記述して、ネストされたすべてのサブディレクトリで実行することを正確に制御できます。

@echo off
call :treeProcess
goto :eof

:treeProcess
rem Do whatever you want here over the files of this subdir, for example:
copy *.* C:\dest\dir
for /D %%d in (*) do (
    cd %%d
    call :treeProcess
    cd ..
)
exit /b

Windowsバッチファイルはディレクトリをループしてファイルを処理しますか?


4
すばらしいアイデアですが、プログラムは、フォルダー階層を維持せずに、すべてのファイルをソースディレクトリから単一の宛先ディレクトリにコピーしませんか?
Jean-Francois T.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.