递归复制文件与目录树,适合旧脚本和简单目录镜像。
xcopy 复制文件和目录,按 /s 或 /e 递归子目录,常用于旧批处理、部署脚本和把一棵目录树复制到另一块盘。它支持按日期更新(/d)、只复制已存在文件(/u)、保留只读属性(/k)、复制隐藏/系统文件(/h)以及复制 ACL(/o)和审核设置(/x)。
边界:xcopy 是较老的命令,缺少重试、校验日志、多线程和可靠的长路径支持;文件名路径超过 255 字符时可能出现“内存不足”错误(官方说明)。它不提供卷影复制,打开中的文件可能复制失败。大规模、需要日志和重试的同步应使用 robocopy;只需要单文件复制用 copy。
Windows 10/11 与 Server 2016+ 仍内置 xcopy;/b 从 Vista 起支持复制符号链接,/j 从 Server 2008 R2 起支持无缓冲复制。PowerShell 中 xcopy 仍是外部程序,可以直接调用,但目录复制更建议用 Copy-Item,参数和错误处理与 CMD 脚本不同。
# 1. 完整复制目录树(含空目录和隐藏文件),目标不存在时按目录创建
C:\> xcopy C:\src D:\dst /E /I /H /Y
# 2. 只复制比目标新的文件,做增量更新
C:\> xcopy C:\src D:\dst /S /D /Y
# 3. 只建目录结构,不复制文件,用于预演目标布局
C:\> xcopy C:\src D:\dst /E /I /T
# 4. 排除缓存和临时文件,排除文件按路径子串匹配
C:\> xcopy C:\src D:\dst /E /I /EXCLUDE:C:\temp\exclude.txt /Y
# 5. 从网络共享复制,出错继续并保留 ACL
C:\> xcopy \\fileserver\share\data C:\backup\data /E /I /C /O /Y
# 6. 只列出将要复制的文件,不实际写入
C:\> xcopy C:\src D:\dst /E /I /L > C:\temp\xcopy-plan.txt
/s 只复制非空子目录,/e 才包含空目录;要完整镜像用 /e,否则目标会缺空目录。/i 时,xcopy 会交互式询问目标是文件还是目录,计划任务会卡住;无人值守必须加 /i。/h),默认还会去掉只读属性(要 /k);ACL 和审核信息需要 /o、/x,否则目标权限是继承来的。/exclude 的匹配是路径子串,写 obj 不仅排除 obj 目录,也会排除 .obj 文件(官方说明);排除文件里尽量写完整片段。if errorlevel 1 会把“没有文件”也当失败。robocopy,它能处理长路径并记录日志。合上页面,先回答,再展开对照。
/s 和 /e 复制子目录时差在哪里?xcopy 停在“F = 文件还是 D = 目录”的提示上,缺了哪个参数?xcopy 退出码 1 代表失败吗?脚本应该怎样判断?/s 排除空目录,/e 连空目录一起复制。/i,它让 xcopy 在目标不存在时按目录处理。
小程序版
微信扫码,随时查命令