2

我有一个包含文件夹列表的文本文件。我的文本文件如下所示:

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

所有这些文件夹下都有子文件夹和文件

我想要做的是使用 xcopy 来复制FOLDER1FOLDER2和复制文件夹FOLDER3 FOLDER4FOLDER5复制这些文件夹的结构,所以在输出中,我想得到

D:\output\bkup\FOLDER1\............包括所有子文件夹和文件 D:\output\bkup\FOLDER2\............包括所有子文件夹和文件 D:\output\bkup\FOLDER3\.......... 包括所有子文件夹和文件
D:\output\bkup\FOLDER4\............包括所有子文件夹和文件
D:\output\bkup\FOLDER5\............ 包括所有子文件夹和文件

我写了下面的脚本,它适用于一个文件夹

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

但是由于要复制的目录数是 100+,我喜欢使用 for 循环或将要复制的目录列表传递到文本文件中,这就是我不知道如何处理它的原因。

请帮助我,我不是批处理文件编写专家。

4

3 回答 3

2

试试看robocopy,它更能满足您的需求,适用于 XP Prof. 或更新版本:

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".

于 2013-06-01T22:14:48.210 回答
2

您可以使用 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
于 2013-06-01T21:47:45.143 回答
0

Taking the solution from this Microsoft forum thread:

To copy folder structure of another without copying files.

Here "ProjectsX" folder is replaced into "ProjectsY" - within SVN directory

/E - include empty directories

/XF * - all files are excluded

/XD ".svn" "obj" - specified directories are excluded

D:\SVN>robocopy ProjectsX ProjectsY /E /XF * /XD ".svn" "obj"

Thanks to the hint to robocopy in the previous answer by Endoro. But you don't need mirroring for this really.

于 2019-11-27T07:43:25.550 回答