2013-06-01 41 views
1

我有一個包含folders.My文本文件列表的文本文件中使用XCOPY複製目錄結構是這樣的:如何在Windows

 
"D:\old\FOLDER1" 
"D:\old\FOLDER2" 
"D:\old\FOLDER3" 
"D:\old\FOLDER4" 
"D:\old\FOLDER5" 

所有這些文件夾都有其下

子文件夾和文件

我想要做的是使用xcopy複製FOLDER1FOLDER2FOLDER3FOLDER4FOLDER5複製文件夾,複製這些文件夾 所以在輸出的結構,我想

 
D:\output\bkup\FOLDER1\............Including all subfolders and files D:\output\bkup\FOLDER2\............Including all subfolders and files D:\output\bkup\FOLDER3\.......... Including all subfolders and files 
D:\output\bkup\FOLDER4\............Including all subfolders and files 
D:\output\bkup\FOLDER5\............ Including all subfolders and files 

我寫了下面的腳本爲一個文件夾

工作正常,但由於目錄#拷貝是100+,我喜歡用一個for循環或通過目錄中複製的列表一個文本文件,這是我不知道如何處理它。

請幫助我,我不是批處理文件寫作的專家。

+0

@rene 感謝您的時間,我收到一個錯誤'docopy'不被識別爲一個內部或外部命令, – user2434611

+0

做了一個編輯並添加了對文本文件''My File With Source Folders.txt'的支持'''和'xcopy'。 – Endoro

+0

@ user2434611通過添加冒號修復了我的答案中的一個錯誤 – rene

回答

1

您可以使用for/f來逐行讀取(如果需要,解析)文本文件。使用「delims =」來讀取整個行。不要忘了在子過程

for /f "delims=" %%a in (yourtextfile.txt) do call :docopy "%%a" 
goto :eof 

:docopy 
set sourceFolder=%~1 
set destinationFolder=%sourceFolder:~7,-1% 
echo %destinationFolder% 
xcopy /s /e /i /h /r /y %sourceFolder% "D:\output\bkup%destinationFolder%" 
goto :eof 
1

嘗試robocopy添加引號,以防止有多個參數,並剝去引號,這是爲您的需要或功能更強大,適用於XP教授新:

set "sourceFolder=D:\old\FOLDER5" 
set "destinationFolder=%sourceFolder:~7,-1%" 
robocopy "%sourceFolder%" "%destinationFolder%" /MIR 

這會在「%destinationFolder%」處產生一個完整的MIRror。

如果你想從一個文本文件xcopy複製文件夾,使用下面的代碼:

set "sourceFolder=D:\old\FOLDER5" 
set "destinationFolder=%sourceFolder:~7,-1%" 
for /f "usebackqdelims=" %%i in ("My File With Source Folders.txt") do xcopy /seihry "%%i" "D:\output\bkup%destinationFolder%" 

與源文件夾文本文件"My File With Source Folders.txt"