2012-01-26 15 views
1

ディレクトリ1からディレクトリ2までのすべてのファイル(サブフォルダ内のファイルも含む)をコピーし、ディレクトリ2にある余分なファイル(または可能であればディレクトリ)をディレクトリ3に移動するバッチを作成しようとしています。 つまり、directory2をdirectory1とミラーリングしようとしていますが、パージアクションの代わりに、余分なファイルをdirectory3に移動しようとしています...robocopy余分なファイルが別のフォルダに移動する

これまでのところ、これらの余分なファイルをテキストファイル...さて、私は...

ROBOCOPY directory1 directory2 /E /COPYALL /R:0 /XO /X /tee /njh /njs /np /ns /nc /ndl > Extrafiles.txt 

さらに進める方法がわからない、Extrafiles.txtは、移動する前に少し文字列操作を意味し、各ファイルパスの先頭に余分なスペースがたくさん含まれていませんファイル。そして、もし存在しなければ、目的のディレクトリを自動的に作成することによってファイルを移動するのにどのコマンドを使用するのですか? Extrafiles.txt

   directory2\File1.txt 
       directory2\subdirectory2\deeper\File2.txt 

出力例すべてのヘルプは理解されるであろう。ありがとうございました。それは、もう少し明確に作る

と仮定にdirectory1が含まれています

\subdir1 
    file4.txt 
    file5.txt 
    \deeper 
     file6.txt 
     file7.doc 
file1.txt 
file2.txt 

とdirectory2がすでに含まれています

\subdir1 
    file4.txt 
    file007.ppt 
    \deeper 
     file6.txt 
     file7.doc 
     \deepest 
      file155.txt 
file1.txt 

は、それから私は、これらのファイルがコピーされたい:

directory1\file2.txt to directory2\file2.txt 
directory1\subdir1\file5.txt to directory2\subdir1\file5.txt 

そして、移動するこれらのファイル:

directory2\subdir1\file007.ppt to directory3\subdir1\file007.ppt 
directory2\subdir1\deeper\deepest\file155.txt to directory3\subdir1\deeper\deepest\file155.txt 

ホープ私は:)

+0

私はあなたが単純にROBOCOPYを使用することによって、あなたが望むすべてを行うことができるはずだと思います。しかし、私はあなたの要件を完全に理解していません。小さな仮想ディレクトリ1,2、および3(それぞれに少なくとも1つのサブディレクトリを含む)がどのように見えるかをリストし、操作が完了した後にどのように見えるかを表示すると、私または他の誰かが良いかもしれないあなたを助けることができる。 – dbenham

+0

editted!もう一度チェックしてみてください... –

答えて

1

あなたは(for /?を参照)robocopyによって生成されたファイルの内容を反復処理するためにforを使用することができ、十分なことが明らかにしました。

次に、あなたは(set /?を参照)ターゲットパスを生成する遅延拡張や変数置換を使用し、そして最後に(call /?を参照)move続い必要に応じてmkdirを行いますサブルーチンを呼び出すことができます。

ドラフトソリューションは次のようになります。

@echo off 
setlocal enabledelayedexpansion 

set srcdir=directory2 
set tgtdir=directory3 

for /f "usebackq tokens=*" %%A in ("Extrafiles.txt") do (
    set srcpath=%%A 
    set tgtpath=!srcpath:%srcdir%=%tgtdir%! 
    call :mkdirmove !srcpath! !tgtpath! 
) 

goto :EOF 

:mkdirmove 
    if not exist %~dp2nul mkdir %~dp2 
    move %1 %2 
goto :EOF 
+0

ありがとうございました。 –

関連する問題