142

有没有办法在 .bat 文件中递归复制目录?有这样的例子吗?

4

4 回答 4

204

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

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

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

xcopy a: b: /s /e

于 2012-11-09T19:13:41.767 回答
89

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

robocopy source_dir dest_dir /s /e
于 2015-06-23T23:09:10.820 回答
17

您可以在 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 批处理文件通过目录循环处理文件?

于 2012-11-09T21:14:41.563 回答
7

我想尽可能地复制 Unix/Linux cp -r。我想出了以下内容:

xcopy /e /k /h /i srcdir destdir

标志说明:

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


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

xcopy /e /k /h /i %*

用法:cpr srcdir destdir


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

于 2020-11-13T17:49:24.840 回答