web-dev-qa-db-ja.com

Robocopyを使用して、フォルダー構造を1つのディレクトリの下にあるすべての(サブ)フォルダーにコピーするにはどうすればよいですか?

とにかく、デスクトップに作成した空のフォルダー構造をすばやく取得して、ネットワークドライブ上にある同じフォルダー内の他の488個のフォルダーにコピーすることはできますか?

これに関する私の主な問題は、作成したフォルダー構造をネットワークフォルダーのサブフォルダーに配置することです。構造をコピーする必要のあるフォルダーは488個あります。それらはすべて、追加のフォルダーとファイル自体を含んでいますが、これらには影響を与えたくありません。 robocopyの宛先フォルダーを宛先フォルダーより1レベル低いまたは深いレベルに設定する方法はありますか?/LEV:nに似ていますが、本質的に逆になっていますか?

似たような状況で再帰について言及している投稿を見たことがありますが、それが可能であれば再帰関数を実行する方法がわかりません。

2
small3687

私はあなたの質問のすべての側面を理解しているかどうかはよくわかりませんが、ここに行きます。

このコードをCMDファイルに保存し、source、destination、robocopy.exeパスをカスタマイズします。destinationは、488サブフォルダーを含むルートフォルダーを意味します。

@echo off
SET "source=C:\Users\zsmall\Desktop\Attachment Structure"
SET "dest=C:\Users\zsmall\Desktop\CustomTest"    
DIR /A:D /B %dest% > folders.txt    
for /f "delims=" %%G in (folders.txt) do (
C:\Windows\System32\robocopy.exe "%source%" "%dest%\%%G" /copy:DAT /E /W:2 /R:2 /MT:8
)
pause

それが何をするか

  • 宛先フォルダーのすべてのフォルダー(サブフォルダーなし)を一覧表示し、名前をテキストファイルに書き込みます
  • そのリストファイル内のすべてのフォルダをループします
  • 現在のフォルダを宛先としてrobocopyコマンドを実行します
    (ソースは常に同じフォルダーです)
  • robocopyは、データ、属性、タイムスタンプを含むすべてのフォルダー、サブフォルダー、ファイルをコピーします

使用されるパラメータについては、こちらをご覧ください。

最初にリストをテキストファイルに保存せずにそれを実行しようとしないでください。または、同じ名前で何千ものサブフォルダーを作成していた私のようになってしまう可能性があります。

2
nixda