replace 批量替换同名文件
replace 用新版本文件批量替换目标目录里的同名文件,支持只更新更旧的文件、只补充目标中不存在的新文件、递归子目录以及连只读文件一起替换。它是发布更新场景中的老工具,特点是按文件名匹配、不比较内容,所以既方便也危险:目标目录的结构与权限没摸清就批量执行,很容易替换掉不该动的文件。
基本信息
| 适用平台 | Windows CMD |
|---|---|
| 语法 | replace 源 目标目录 [/a] [/u] [/s] [/r] [/p] |
| 常用开关 | /u 只更新更旧、/a 只补充新文件、/s 递归、/r 含只读、/p 逐个确认 |
| 匹配方式 | 仅按文件名,不比较内容 |
| 建议 | 先确认目标目录结构再执行 |
典型使用场景
- 把构建产物批量替换到部署目录,只更新更旧的文件
- 补充目标目录缺失的依赖文件,不覆盖已存在文件
- 维护多台机器上同一套工具或配置文件的版本一致性
- 老环境里没有现代部署工具时的替代手段
- 替换带只读属性的系统文件时需要 /r 才能覆盖
常用示例
常用示例
replace D:\build\app.exe D:\deploy REM 替换目标目录中的同名文件
replace D:\build\app.exe D:\deploy /s /u /r REM 递归、只更新更旧、含只读
replace D:\build\*.dll D:\deploy /s /a REM 只补充目标中缺失的文件
replace D:\build\config.ini D:\deploy /p REM 每个文件替换前提示确认
:: 先列目录确认结构与权限:dir D:\deploy /s /b | more开关与建议
| 开关 | 作用 | 使用建议 |
|---|---|---|
| /u | 只替换比源更旧的文件 | 发布更新时的默认选择 |
| /a | 补充目标中不存在的新文件 | 不覆盖已有文件 |
| /s | 递归处理子目录 | 漏掉会出现「执行了却没替换」 |
| /r | 连只读文件一起替换 | 系统文件常带只读属性 |
/u 与 /a 语义不同:前者只更新更旧的文件,后者只补充目标中缺失的文件,两者不能互相替代;不加任何开关则替换全部同名文件,包括更新的版本。
replace 只按文件名匹配,不比较内容与版本,对共享目录或多人维护的目录要格外谨慎,最好先用 /p 逐个确认再执行。