2017-08-23 20 views
0

タイトルが明確であるかどうかわかりません。 これは私がやろうとしていますものです:サブフォルダ内のフォルダを移動する

実際のフォルダ構造:私は希望

Root_Folder 
| 
+-- Folder1 
|  
+-- Folder2 
| | 
| +-- file 2.1 
|  
+-- Folder3 
| | 
| +-- file 3.1 
| +-- file 3.2 
|  
+-- Folder 4 
| | 
+ |-- Subfolder 4.1 

フォルダ構造:

Root_Folder 
| 
+-- Folder1 
| | 
| +-- Documents 
| 
+-- Folder2 
| | 
| +-- Documents 
| | | 
| | +-- file 2.1 
|  
+-- Folder3 
| | 
| +-- Documents 
| | | 
| | +-- file 3.1 
| | +-- file 3.2 
|  
+-- Folder 4 
| | 
| +-- Documents 
| | | 
| | +-- Subfolder 4.1 

私が思いついたスクリプト:

SET ROOT_FOLDER=C:\Folder\Root 
SET WORK_FOLDER=C:\Temp 
SET FILE_LIST=%WORK_FOLDER%\list.txt 
DIR %ROOT_FOLDER% >%FILE_LIST% /a:d /b 
CD %ROOT_FOLDER% 

FOR /F %%i IN (%FILE_LIST%) DO ROBOCOPY "%ROOT_FOLDER%\%%i" "%ROOT_FOLDER%\%%i\Documents" /MOVE /MIR /SEC /R:1 /W:1 /COPYALL 

残念ながら、動作しません。 それは何でやっているように見える:各FolderXで

  • 、サブフォルダが作成され書類:良い
  • folderXからサブフォルダがそれに移動されています。良い
  • が、そこ別のサブフォルダも作成されています。bad
  • eは*この**ドキュメントに移動サブフォルダ:悪い

あなたたちは、私を助けてくださいもらえますか?

おかげ

答えて

0

問題がROBOCOPYがDocumentsフォルダを作成し、コピーを開始されているが、/MOVEパラメータ、それは最初の内側に再びDocumentsフォルダが作成されますので、それは、ファイルとのdirsを動かすように指示します。

/XD "Documents"パラメータをROBOCOPYに追加してみてください。このよう

:私はそれを理解したよう

SET ROOT_FOLDER=C:\Folder\Root 
SET WORK_FOLDER=C:\Temp 
SET FILE_LIST=%WORK_FOLDER%\list.txt 
DIR %ROOT_FOLDER% >%FILE_LIST% /a:d /b 
CD %ROOT_FOLDER% 

FOR /F %%i IN (%FILE_LIST%) DO ROBOCOPY "%ROOT_FOLDER%\%%i" "%ROOT_FOLDER%\%%i\Documents" /MOVE /MIR /SEC /R:1 /W:1 /COPYALL /XD "Documents" 
+1

ありがとうございます。これは動作します! – Mercusio

0

は、あなたの問題は、あなたがRobocopyを、この場合に何をするか分からないということです。簡単なバッチファイルで同じプロセスを明示的に実行することをお勧めします。あなたは何をしているのか常に知っています。

@echo off 
setlocal EnableDelayedExpansion 

set "ROOT_FOLDER=C:\Folder\Root" 

rem For each folder in root folder 
cd "%ROOT_FOLDER%" 
for /D %%a in (*) do (
    cd "%%a" 

    rem Move all existent folders into "Documents" folder 
    for /F "delims=" %%b in ('dir /B /A:D') do (
     md Documents 2> NUL 
     move "%%b" "Documents\%%b" 
    ) 

    rem Move all existent files into "Documents" folder 
    md Documents 2> NUL 
    move *.* Documents 

    cd .. 
) 
+0

ありがとうございましたが、権限と日付ですべてを移動できるようにするために、ROBOCOPYを使用したかったのです。 – Mercusio

関連する問題