Batch file 批处理文件以递归方式复制目录

Batch file 批处理文件以递归方式复制目录,batch-file,copy,Batch File,Copy,有没有办法在.bat文件中递归复制目录?有这样的例子吗?查看,它将递归复制文件和子目录 下面有一些例子,占页面的2/3。特别有用的是: 要将所有文件和子目录(包括任何空子目录)从驱动器A复制到驱动器B,请键入: xcopy a:b:/s/e 您可以批量编写递归算法,以便精确控制在每个嵌套子目录中执行的操作: @echo off call :treeProcess goto :eof :treeProcess rem Do whatever you want here over the file

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

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

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

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

xcopy a:b:/s/e


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

@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 7 64位SP 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管理员)

你是说xcopy/s?或者更高级的robocopy?这可能会对您有所帮助,尽管这会删除,但您可以轻松地改为复制。另请参见“好主意”,但您的程序是否会将源目录中的所有文件复制到单个目标目录中,而不保留文件夹层次结构?您可能也希望包含/y标志“取消确认覆盖现有目标文件的提示。“'xcopy'不是一个好主意,因为它们以内存不足错误而闻名。试着用“机器人技术”@Rahul-Hmm真的吗?我从来没有见过,但xcopy肯定从黑暗时代就存在了。您也可以在PowerShell中执行
Copy Item-Recurse
。不幸的是,这种行为非常常见:)。如果您经常看到这种情况发生,尤其是如果您希望复制大量数据(如GIG数据)。表示xcopy已被弃用,应使用robocopy。不知道“robocopy”是windows 7中的内置命令!谢谢你的回答,非常有用和强大:)难道
/E
不意味着
/S
<代码>复制子目录,包括空目录。Hmmm
/S
/E
根据robocopy
/?
帮助,似乎暗示了相反的事情-S是“非空目录”,E是“空目录”。我认为您应该选择一个。对于大多数用户,我认为执行/e(包括空目录)就足够了。请注意,
robocopy
如果成功复制了一个或多个文件,则返回1的退出代码。
robocopy source_dir dest_dir /s /e