用于递归复制目录的批处理文件

时间:2012-11-09 19:12:19

标签: batch-file copy

有没有办法在.bat文件中递归复制目录? 如果是这样,一个例子会很棒。感谢。

4 个答案:

答案 0 :(得分:152)

查看xcopy,它将以递归方式复制文件和子目录。

有一些例子,页面下方有2/3。特别有用的是:

  

要将所有文件和子目录(包括任何空子目录)从驱动器A复制到驱动器B,请键入:

     

xcopy a: b: /s /e

答案 1 :(得分:52)

在阅读了接受的答案的评论之后,我尝试了robocopy命令,它对我有用(使用Windows 7 64位SP 1的标准命令提示符):

robocopy source_dir dest_dir /s /e

答案 2 :(得分:13)

您可以在Batch中编写一个递归算法,它可以精确控制您在每个嵌套子目录中执行的操作:

@echo off
call :treeProcess
goto :eof

:treeProcess
rem Do whatever you want here over the files of this subdir, for example:
copy *.* C:\dest\dir
for /D %%d in (*) do (
    cd %%d
    call :treeProcess
    cd ..
)
exit /b

Windows Batch File Looping Through Directories to Process Files?

答案 3 :(得分:1)

我想尽可能地复制Unix / Linux的cp -r。我提出了以下建议:

xcopy /e /k /h /i srcdir destdir

标志说明:

/e复制目录和子目录,包括空目录和子目录。
/k复制属性。普通Xcopy将重置只读属性。
/h也复制隐藏文件和系统文件。
/i如果目的地不存在并且要复制多个文件,则假定目的地是目录。


我将以下内容放入批处理文件(cpr.bat)中,这样我就不必记住这些标志了:

xcopy /e /k /h /i %*

用法:cpr srcdir destdir


您可能还想使用以下标志,但是我没有:
/q安静。复制时不显示文件名。
/b复制符号链接本身和链接目标。 (需要UAC管理员)
/o复制目录和文件ACL。 (需要UAC管理员)