xcopy 是什么
xcopy 是 Windows 自带的目录树复制命令,支持整树复制、按日期或属性筛选、只搬运归档位为新的文件。它在老系统与既有批处理里非常常见,但官方已经推荐改用 robocopy:xcopy 不擅长长路径、出错重试与实际状态回报都比较弱。
基本信息
| 适用平台 | Windows CMD,从 XP 至今的客户端与服务器系统均内置 |
|---|---|
| 语法 | xcopy 源 [目标] [/E] [/I] [/Y] [/C] [/H] [/S] [/D[:日期]] [/T] [/O] [/X] |
| 常用参数 | /E 含空目录、/S 不含空目录、/I 目标按目录处理、/Y 覆盖不提示、/C 出错继续、/H 含隐藏与系统文件、/D 只复制较新文件、/T 只建目录结构 |
| 退出码 | 0 成功、1 无文件可复制、2 用户中断、4 初始化错误、5 磁盘写入错误 |
| 推荐替代 | 需要镜像同步或保权限时用 robocopy |
典型使用场景
- 网站目录整体备份到另一块盘,同时保留空目录结构
- 增量搬运:只复制上次备份之后修改过的文件,减少拷贝量
- 只生成目录骨架不搬内容,用于快速铺一套模板结构
- 数据迁移前先做一次预演复制,核对文件数量与目录层级
- 维护老脚本:既有 .bat 里大量 xcopy 调用,需要看懂参数再改
常用示例
常用示例
REM 整树复制并保留空目录,目标自动按目录处理
xcopy D:\Web D:\Backup\Web /E /I /Y
REM 只复制今天之后修改过的文件(按日期增量)
xcopy D:\Src D:\Dst /D /Y
REM 只生成目录骨架,不复制文件内容
xcopy D:\Tree D:\Skeleton /T /E
REM 连隐藏与系统文件一起带(谨慎)
xcopy D:\Data D:\Backup\Data /E /H /Y
REM 批处理里按退出码判断(从大到小判断)
if errorlevel 5 echo 磁盘写入失败
if errorlevel 1 echo 无新文件或用户中断退出码读法
| 退出码 | 含义 | 常见原因 |
|---|---|---|
| 0 | 复制完成 | 正常结束 |
| 1 | 没有找到要复制的文件 | 源为空,或 /D 筛选后没有新文件 |
| 2 | 用户中止 | 交互过程中按下 Ctrl+C |
| 4 | 初始化错误 | 内存或磁盘空间不足、路径非法 |
| 5 | 磁盘写入错误 | 目标盘满、权限不足或被占用 |
源路径末尾带不带反斜杠会改变语义:一种是把目录内容复制过去,另一种是把目录本身复制过去。执行前先用 echo 打印完整命令核对,比事后翻备份更省事。
xcopy 默认不保留权限与审计信息,/O 加 ACL、/X 加审计设置,但跨域或目标文件系统不支持时会失败。需要完整镜像、保权限、断点重试的场景直接用 robocopy。