2017-07-27 34 views
0

我想創建一個批處理腳本,將不同位置的多個目錄複製到另一個位置的單個目錄中。問題是,ROBOCOPY被複制的根目錄,而不是根目錄本身將多個目錄複製到一個目錄使用Robocopy保留根文件夾

的內部內容,所以如果我在位置3個目錄一遭: C:\ DIR1C:\ DIR2C:\ DIR3

,我想將它們複製到一個單個文件夾到另一個位置前: d:\ dirBackups

,這樣的結果將是d:\ dirBackups \ DIR1d:\ dirBackups \ DIR2d:\ dirBackups/DIR3

目前ROBOCOPY被複制裏面DIR1DIR2DIR3所以我的東西我結束了與三個目錄的內容全部爲d:\ dirBackups

我使用下面的代碼

for /F "tokens=*" %%A in (%pathsFile%) do (
    robocopy %%A D:\dirBackups /E /COPYALL /XF /SEC /SECFIX /TIMFIX /W:0 /R:1 /REG /XJ /Z /FFT 
) 

%pathsFile%是一個文本文件,它包含的目錄來進行備份到d:\ dirBackups,所以我通過文件循環和每行,我引發相同ROBOCOPY命令。

文件被複製得很好,但根目錄從不包含,因此它的工作方式就像展開所有文件夾並僅將每個文件夾的內部內容複製到一個位置。

謝謝

+2

它應該是一個反斜槓'D:\ dirBackups'不是正斜槓'D:/ dirBackups'。你也不需要使用'/ SEC',這相當於'/ COPY:DATS'_,因爲你已經使用了'/ COPYALL',這相當於'/ COPY:DATSOU'_。另外你的'/ XF'選項沒有命名任何要排除的文件,輸入'ROBOCOPY /?'到一個命令提示窗口以獲得關於該命令的更多信息。 – Compo

+0

我的路徑是使用\不/我犯了一個錯誤,當輸入此...並感謝信息,但任何線索如何我可以從根複製多個文件夾到另一端的一個文件夾?謝謝 – Eric

回答

1

這是如何工作的?

@ECHO OFF 
FOR /F "USEBACKQ DELIMS=" %%A IN ("%pathsFile%") DO (
    ROBOCOPY "%%~A" "D:\dirBackups\%%~nxA" /E /Z /COPYALL /SECFIX /TIMFIX /XJ /FFT /R:1 /W:0 /REG 
) 
+0

你是一個救星@Compo ...像一個魅力工作...如果你可以請解釋代碼的重要組成部分,使它發生我真的很感激:)再次感謝;) – Eric

相關問題