2017-08-23 65 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子文件夾移動到它:
  • 但有是另一個文檔在其中創建的子文件夾太:不好
  • 文件夾下的文件X ar e搬進了這個** Documents *子文件夾:不好

請問你們能幫我嗎?

感謝

回答

0

問題是ROBOCOPY是創建Documents文件夾,並開始複製,但/MOVE參數告訴它移動文件和目錄,因此再次創造了第一個內部的Documents文件夾。

嘗試將/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

相關問題