如何使用robocopy命令复制文件夹和子文件夹?
Windows命令行中可靠的文件复制命令被称为 robocopy 。它使用户能够在不同位置之间 移动磁盘、文件夹和文件 。
Robocopy 自从首次包含在 Windows NT4 资源包中的 25年 以来几乎没有做过大的改动。然而, SMB压缩 是其中的一个新功能,但用法保持不变。Robocopy是用于 复制/镜像操作 的最佳免费应用程序之一,因为它具有许多出色的功能,例如复制 NTFS ACLs (权限)。
以下是可用于以下 Microsoft 操作系统的第三方命令 robocopy.exe 。
- 在Windows NT中(资源工具包中)
- 在Windows 2000中(资源工具包中)
- 在操作系统2008中
- 在Windows Vista中
- 在Windows 7中
- 在Windows 8中
- 在Windows 10中
Windows 10和11的语法:
ROBOCOPY 源 目标 [文件[文件]…] [选项]
- 源:
源目录 ( 服务器共享路径或驱动器路径 )。
- 目标:
目标目录 ( 驱动器路径或服务器共享路径 )。
- 文件:
( 名称/通配符:默认为”.“ )要复制的文件。
复制选项:
- /S:
复制子目录,但不包括空目录。
- /E:
复制子目录,包括空目录。
- /LEV:n:
仅复制源目录树的 n级 。
- /Z :
以可重启模式复制文件。
- /B:
备份文件。
- /ZB:
切换到可重启模式。当访问被拒绝时,切换到备份模式。
- /J:
使用无缓冲I/O复制(对于大型文件推荐)。
- /EFSRAW:
在 EFS原始模式 下,复制所有加密文件。
- /COPY:[复制标志]:
(/COPY: DAT是默认值)要复制文件的内容。
(复制标志:数据(D),属性(A)和时间戳(T))。
O = 所有者信息, U=审核信息, S = 安全=NTFS ACL。
- /SEC:
安全文件复制,相当于 /COPY: DATS 。
- /COPYALL:
复制所有文件信息(对应 /COPY: DATSOU )。
- /NOCOPY:
不复制文件信息(与 /PURGE 一起使用)。
- /SECFIX:
改善所有文件的文件安全性,即使它们被跳过。
- /TIMFIX:
修复所有文件的文件时间,包括被跳过的文件。
- /PURGE:
如果目标文件或目录在源中不存在, 删除 它们。
- /MIR:
/E加上/PURGE 等同于镜像目录树。
- /MOV:
移动文件(复制后从源中删除)。
- /MOVE:
移动文件和目录(复制后从源中删除)。
- /A+:[RASHCNET]:
添加指定属性以复制文件。
- /A-:[RASHCNET]:
从重复文件中删除指定属性。
- /CREATE:
创建具有零长度的目录树和文件。
- /FAT:
它用于利用仅 8.3 FAT 文件名 生成最终文件。
- /256 :
禁用对超长路径(超过 256 个字符 )的支持。
- /MON:n:
监视源代码;当可见的更改超过 n 个 时重新运行。
- /MOT:m :
监视源代码;如果发生任何更改,则在 m 分钟 后再次运行。
- /RH:hhmm-hhmm :
运行时段是可以启动新拷贝的时间范围。
- /PF :
用于检查每个文件的运行时段,而不是每个拷贝。
- /IPG:n :
间隔(毫秒) 通过减少慢速线路上的带宽。
- /SJ :
应将连接点以连接点而不是连接点目标来复制。
- /MT[:n] :
使用 n 个线程 进行 多线程拷贝 (默认值为8)。必须输入至少一个,但不能超过 128 个 为 n 。选项不与 /IPG 和 /EFSRAW 选项同时使用。您可以使用 /LOG 选项重定向输出以提高性能。
- /DCOPY:[copyflags] :
目录的拷贝默认值为 /DCOPY: DA (拷贝标志:数据,属性,时间戳,EA 和跳过替代数据流)。
- /NODCOPY :
不会拷贝目录信息(默认为 /DCOPY: DA )。
- /NOOFFLOAD :
拷贝文件时不使用 Windows 拷贝重载技术。
- /COMPRESS:
在传输文件时,如果适用,请请求网络压缩。
复制文件限制的选项:
- /IoMaxSize:n[KMG] :
每个读写循环的请求的最大 I/O 大小为 n [KMG] 字节 。
- /IoRate:n[KMG] :
请求的每秒 [KMG] 字节 的 I/O 率。
- /Threshold:n[KMG] :
阻塞的文件大小阈值为 n [KMG] 字节 。
文件选择的选项:
- /A :
仅拷贝已设置存档属性的文件。
- /M :
重置该属性并仅拷贝已设置为 “archive” 的文件。
- /IA:[RASHCNETO]:
除非指定了以下至少一种特性,否则不要包含任何文件。
- /XA:[RASHCNETO] :
如果设置了上述任何一个属性,则排除该文件。
- /XF file [file]… :
将文件名、路径或通配符提供的文件排除。
- /XD dirs [dirs]… :
将指定名称或路径的文件夹排除。
- /XC :
排除已修改的文件。
- /XN :
排除较新的文件。
- /XO :
应该排除较旧的文件。
- /XX :
排除补充的文件夹和文件。
- /XL :
省略任何单个文件和目录。
- /IS :
它包含相同的文件。
- /IT :
应包括修改文件。
- /MAX:n :
文件大小超过 n字节 的将被忽略为最大文件大小。
- /MIN:n :
排除大小为n字节或更小的文件。
- /MAXAGE:n :
由于最大文件年龄,排除比 n天/日期 旧的文件。
- /MINAGE:n :
作为最小值排除比 n天/日期 旧的文件。
- /MAXLAD:n :
排除最后访问日期是 n 的文件。
- /MINLAD:n :
排除从最后访问日期起n天后使用的文件。 (如果 n 1900,n 等于 天数 ; 否则, n 是 日期 ,格式为 YYYYMMDD )。
- /FFT :
将其视为FAT文件时间(2秒的粒度)。
- /DST :
增加一小时来弥补DST时间变化。
- /XJ :
排除连接点和符号链接(用于文件和文件夹)。
- /XJD :
目录和连接点不应具有符号连接。
- /XJF :
排除文件符号链接。
- /IM :
其中包含更新的文件(不同的更改时间)。
重试选项:
- /R:n :
每次失败的复制尝试重试次数默认设置为 1000000 。
- /W:n :
默认情况下,每次重试之间有 30秒 的等待时间。
- /REG :
用于在注册表中保存 /R:n 和 /W:n 的默认值。
- /TBD :
用于等到指定共享名称(重试错误67)。
- /LFSM :
在低自由空间模式下运行时,用于复制 暂停 和 恢复 功能(见备注)。
- /LFSM:n[KMG] :
以n [ K:千,M:兆,G:千兆 ]字节的楼层数为单位,并带有 /LFSM命令 。
日志选项:
- /L :
仅列出文件,不复制、时间戳或删除文件。
- /X :
不仅包括选择的文件,还包括任何其他文件。
- /V:
用于创建详细输出,并显示跳过的文件。
- /TS :
包括源文件的时间戳在结果中。
- /FP :
在输出中包括带有完整路径的文件名。
- /BYTES :
以字节为单位显示大小。
- /NS :
如果没有大小,则不记录文件大小。
- /NC :
如果没有类,则不记录文件类。
- /NFL :
不记录文件名或文件列表。
- /NDL :
不记录目录名;不提供目录列表。
- /NP :
如果没有进度,则不显示复制的百分比。
- /ETA :
显示复制文件的预计到达时间。
- /LOG:文件名 :
将日志文件作为状态输出(覆盖现有日志)。
- /LOG+:文件名 :
将日志文件作为状态输出(追加到现有日志)。
- /UNILOG:文件名 :
创建一个Unicode日志文件作为输出状态(覆盖现有日志)。
- /UNILOG+:文件名 :
创建一个Unicode日志文件作为输出状态(追加到现有日志)。
- /TEE :
创建一个日志文件并将其输出到控制台窗口。
- /NJH :
不显示作业标题。
- /NJS :
没有位置描述。
- /UNICODE :
用Unicode格式显示输出。
作业选项:
- /JOB:作业名 :
应使用指定作业文件的参数。
- /SAVE作业名 :
用于保存指定的作业文件的参数。
- /QUIT :
命令行已处理完毕,退出(以查看参数)。
- /NOSD :
未提及源目录。
- /NODD :
没有指定的目标目录。
- /IF :
添加下面列出的文件。
以前,在根目录上使用/PURGE或/MIR命令对robocopy执行指定操作,会同时对 “System Volume Information”目录中的文件执行该操作。但现在不再适用。如果提供/PURGE或/MIR命令,robocopy会跳过复制会话的顶级源目录和目标目录中具有这些名称的任何文件或目录。
仅对修改过的文件进行分类的功能仅适用于源和目标文件系统(如NTFS)支持更改时间戳并且源和目标文件具有不同的更改时间。默认情况下,某些文件不会被复制;输入/IM以包括它们。
文件夹的复制选项/DCOPY: E要求复制扩展属性。需要注意的是,如果目录的扩展属性无法复制,robocopy目前仍会保持运行。/COPYALL选项也不包含此标志。
使用/LFSM命令行选项以”低空闲空间模式”运行robocopy。在此模式下,文件复制将在目标卷的剩余空间低于预定的”floor”值时暂停,该值可以由标志的LFSM:n[KMG]变体明确定义。如果没有提供floor值,将目标卷大小的10%作为floor。/MT,/EFSRAW,/B和/ZB命令在低空闲空间模式下不起作用。
Windows 8及更早版本的语法:
ROBOCOPY 源目标 [文件 [文件]…] [选项]
- 源 :
源目录(服务器共享路径或驱动器路径)。
- 目标 :
目标目录(驱动器路径或服务器共享路径)。
- 文件 :
复制指定的文件(名称/通配符,默认为”.“)。
复制选项:
- /S :
子目录应该被复制,但空目录不应被复制。
- /E:
复制每个子目录,包括空目录。
- /LEV:n:
只复制源目录树的前n个级别。
- /Z:
以可重新启动的模式复制文件。
- /B:
备份文件的副本。
- /ZB:
使用可重新启动的模式。当访问被阻止时,切换到备份模式。
- /EFSRAW:
以EFS原始模式复制每个加密文件。
- /COPY:[copyflags]:
(/COPY: DAT为默认选项)文件复制的内容。
(Copyflags: Data (D), Attributes (A), and Timestamps (T))。
O=拥有者信息,U=审计信息,S=安全=NTFS ACLs。
- /DCOPY:T:
COPY 目录中的时间戳。
-
/SEC:
安全文件复制与 /COPY: DATS 相当。
- /COPYALL:
复制整个文件信息的等效选项为 /COPY: DATSOU 。
- /NOCOPY:
不复制文件信息(适用于/PURGE)。
- /SECFIX:
改善所有文件的文件安全性,即使有些文件被跳过。
- /TIMFIX:
修复所有文件的时间,即使有些文件被跳过。
- /PURGE:
如果目标文件或目录在源中不存在,则删除它们。
- /MIR:
/E+ +/PURGE是镜像目录树的等效选项。
-
/MOV:
移动文件(在复制后从源中删除)。
- /MOVE:
移动文件和目录(在复制后从源中删除)。
- /A+:[RASHCNET]:
复制的文件将具有指定的属性。
- /A-:[RASHCNET]:
从重复文件中删除指定属性。
- /CREATE:
仅创建零长度的目录树和文件。
- /FAT:
使用仅8.3 FAT文件名生成最终文件。
- /256:
禁用对超长路径(超过256个字符)的支持。
- /MON:n:
监视源,当检测到超过n个更改时重新运行。
- /MOT:m:
监视源,如果有任何更改,m分钟后再次运行。
- /RH:hhmm-hhmm:
运行时间窗口-可以发起新的复制的时间范围。
- /PF:
每个文件而不是每次运行检查运行时间。
- /IPG:n:
间隔(毫秒) 释放慢速线路上的带宽。
-
/SL:
复制象征性连接而不是目标。
- /MT[:n]:
进行 n线程多线程 复制(默认为8)。
n的值必须至少为1且不超过128。
/IPG和/EFSRAW选项与此选项不兼容。
为了提高性能,请使用/LOG选项重定向输出。
文件选择选项:
- /A :
只复制具有存档属性的文件。
- /M :
用于重置属性,并仅复制具有”存档”属性的文件。
- /IA:[RASHCNETO] :
除非至少指定以下任一特征,否则不包括任何文件。
- /XA:[RASHCNETO] :
如果设置了上述任何属性,则将排除文件。
- /XF file [file]… :
排除具有指定通配符、路径或名称的文件。
- /XD dirs [dirs]… :
不允许具有指定名称或路径的文件夹。
- /XC :
省略更新的文件。
- /XN :
排除更新的文件。
- /XO :
省略旧文件。
- /XX :
排除补充文件夹和文件。
- /XL :
删除单个文件和文件夹。
- /IS :
添加相同的文件。
- /IT :
使用此命令包括修改过的文件。
- /MAX:n :
忽略超过n字节的文件作为最大文件大小。
- /MIN:n :
排除大小为n字节或更小的文件。
- /MAXAGE:n :
由于最大文件年龄,排除早于n天/日期的文件。
- /MINAGE:n :
文件必须至少n天或更旧才能被包括在内。
- /MAXLAD:n :
排除最后访问日期为n的文件。
- /MINLAD:n :
排除从最小最后访问日期之后n天使用的文件。(如果n为1900,则n等于天数,否则n为日期,格式为YYYYMMDD)。
- /XJ :
不包括连接点。(通常默认包括)。
- /FFT :
考虑FAT文件的时间(2秒粒度)。
- /DST :
通过一个小时补偿夏令时时间差异。
- /XJD :
排除目录连接点。
- /XJF :
排除文件连接位置。
重试选项:
- /R:n :
默认情况下,为不成功的复制设置重试次数为1,000,000。
- /W:n :
默认情况下,每次尝试之间有30秒的等待时间。
- /REG :
将默认值保存在注册表中,用于/R:n和/W:n。
- /TBD :
等到指定共享名称(重试错误67)。
日志选项:
- /L :
不复制、不设置时间戳或删除任何文件;只列出它们。
- /X :
报告所有附加的文件,而不仅仅是所选择的文件。
- /V :
用于创建详细输出,并显示跳过的文件。
- /TS :
结果应包含源文件的时间戳。
- /FP :
在输出中包含带有完整路径的文件名。
- /BYTES :
以字节显示大小。
- /NS :
如果没有大小,则不记录文件大小。
- /NC :
如果没有类别,则不记录文件类别。
- /NFL :
不记录文件名或文件列表。
- /NDL :
如果没有提供目录列表,则不记录目录名。
- /NP :
如果没有进度,则不显示复制百分比。
- /ETA :
显示复制的文件的预计到达时间。
- /LOG: file :
将LOG文件作为状态输出(覆盖现有的日志)。
- /LOG+:file :
将LOG文件作为状态输出(追加到现有的日志)。
- /UNILOG: file :
创建一个 UNICODE日志文件 作为输出状态(覆盖现有的日志)。
- /UNILOG+:file :
创建一个UNICODE日志文件作为输出状态(追加到现有的日志)。
- /TEE :
创建一个日志文件并将其输出到控制台窗口。
- /NJH :
零作业标题。
- /NJS :
无作业描述。
- /UNICODE :
输出为UNICODE格式。
作业选项:
- /JOB: jobname :
应使用指定作业文件的参数。
- /SAVE jobname :
将参数保存到指定的作业文件中。
- /QUIT :
处理命令行后退出(以查看参数)。
- /NOSD :
未提及源目录。
- /NODD :
未指定目标目录。
- /IF :
添加下面列出的文件。
robocopy的例子:
robocopy c:\hope c:\hope2 *.txt
在第一个例子中,任何.txt文件将从hope目录复制到hope2目录。每当你想复制单个文件或多个文件而不是整个目录时,必须在目标目录之后提供文件。
在上述示例中,robocopy命令将会将hope目录中的每个文件(而不是目录)复制到hope2目录中。
hope目录和hope2目录都会复制它们的所有文件和文件夹-包括空文件夹。
此示例在将c:hope的内容镜像到c:hope2时,删除了hope2目录中不存在的任何文件。由于/mir开关会删除与目标目录中不匹配的文件,因此请谨慎使用。
在这个例子中,下一步是将位于名为computer的网络计算机上的hope目录中的任何文件复制到当前计算机上的hope2目录。