惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
D
DataBreaches.Net
F
Full Disclosure
腾讯CDC
博客园 - 【当耐特】
MyScale Blog
MyScale Blog
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
The Register - Security
The Register - Security
WordPress大学
WordPress大学
博客园 - 聂微东
雷峰网
雷峰网
J
Java Code Geeks
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Privacy International News Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
A
Arctic Wolf
Scott Helme
Scott Helme
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tor Project blog
博客园 - 三生石上(FineUI控件)
Know Your Adversary
Know Your Adversary
AWS News Blog
AWS News Blog
G
Google Developers Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CERT Recently Published Vulnerability Notes
O
OpenAI News
Project Zero
Project Zero
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Application and Cybersecurity Blog
Application and Cybersecurity Blog
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
MongoDB | Blog
MongoDB | Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
P
Palo Alto Networks Blog
Schneier on Security
Schneier on Security

木灵鱼儿

x86多网口软路由+pve+爱快ikuai+iStoreOS实现组网和翻墙 - 木灵鱼儿 生产部署时动态导入 Chunk 失效的实用回退方案 - 木灵鱼儿 如何在 Vite 项目中优雅地展示用户协议?(Markdown 转 Vue 组件方案) - 木灵鱼儿 Vue 路由守卫进阶:用策略模式告别 if-else - 木灵鱼儿 16 Python for循环 - 木灵鱼儿 15 Python while循环 - 木灵鱼儿 如何生成一个“扫码连WIFI”的二维码 - 木灵鱼儿 14 Python 分支语句if - 木灵鱼儿 13 Python 字符串详解 - 木灵鱼儿 12 Python 语句、表达式与运算符 - 木灵鱼儿
Windows 下如何快速复制目录的同时排除指定的目录和文件 - 木灵鱼儿
木灵鱼儿 · 2026-06-03 · via 木灵鱼儿

前言

今天在开发的时候,同事让我启一个前端服务,他们要在本地测试,但是呢,我又需要改代码,如果频繁的触发热更新,会导致他们测试的页面刷新,影响测试效率,所以我只能再拉一个项目仓库,在另一个目录中开发,这样就避免开发过程中频繁的更新了。毕竟已经是独立项目文件了。

但是呢,有一点我很不爽,就是当下的AI开发环境下,其实项目目录存在很多没有传到git的纯本地AI文件,比如IDE的配置文件、skills等,加上现在AI的插件好几个,这样的目录或者文件存在很多份,而重新git拉取的项目又不会有这些文件,让我一个个复制过去还挺麻烦的,所以研究下了,发现windows其实有一个很好用的命令:robocopy,可以很好的解决这个问题。

为此写个教程,教大家如何使用robocopy来快速复制目录和文件。

robocopy 的基本用法

robocopy 是 Windows 系统内置的命令行工具,无需额外安装,打开「命令提示符(CMD)」或「PowerShell」即可使用。

它的基本语法是:

robocopy 源文件夹 目标文件夹 [文件] [选项]

最常用的复制命令如下:

robocopy "源文件夹" "目标文件夹" /E

其中 /E 表示复制所有子目录(包括空目录)。如果你只想复制非空的子目录,可以用 /S

要排除指定的目录,需要加上 /XD 参数(eXclude Directories):

robocopy "D:\project" "E:\backup" /E /XD node_modules

上面这条命令的含义是:把 D:\project 复制到 E:\backup,但跳过名为 node_modules 的目录。

几个常用参数小结:

参数作用
/E复制所有子目录(含空目录)
/S复制所有子目录(不含空目录)
/XD排除指定的目录
/XF排除指定的文件
/MIR镜像复制(让目标与源完全一致,慎用,会删除目标中多余的文件)

关键注意点:源文件夹与目标文件夹的关系

这是使用 robocopy 最容易踩坑的地方,一定要搞清楚。

robocopy 复制的是「源目录里面的内容」,而不是「源目录本身」。

举个例子,假设我们有一个目录 D:\a,里面有 1.txt2.txt 两个文件。我们想把它复制到「新建文件夹」E:\新建文件夹

情况 1:目标写成「新建文件夹」

robocopy "D:\a" "E:\新建文件夹" /E

执行结果:

E:\新建文件夹\1.txt
E:\新建文件夹\2.txt

可以看到,是把 a 里面的内容直接复制进了「新建文件夹」,并没有保留 a 这一层目录。

情况 2:想保留 a 目录本身

如果你希望复制后的结果是 E:\新建文件夹\a,也就是把整个 a 文件夹搬过去,那么目标路径就要写到 a 这一层:

robocopy "D:\a" "E:\新建文件夹\a" /E

执行结果:

E:\新建文件夹\a\1.txt
E:\新建文件夹\a\2.txt
一句话记住:robocopy 复制的是源目录的「内容」,目标路径写到哪一层,内容就落在哪一层。 想保留源目录名,就在目标路径里把这一层补上。

排除多个目录,以及同时排除文件

实际场景中,要排除的往往不止一个目录,有时还要连某些文件一起排除。这两个需求都很好满足。

1. 排除多个目录

/XD 后面可以直接跟多个目录名,用空格隔开:

robocopy "D:\project" "E:\backup" /E /XD node_modules .git dist

上面这条命令会同时排除 node_modules.gitdist 三个目录。

需要注意的是,/XD 后面只写目录名时,会排除所有同名目录(无论它在第几层)。如果你只想排除某个特定路径下的目录,可以写完整的绝对路径:

robocopy "D:\project" "E:\backup" /E /XD "D:\project\dist"

这样就只排除根目录下的 dist,而不会影响子目录里同名的 dist

2. 同时排除文件

排除文件用 /XF 参数(eXclude Files),同样支持多个,并且支持通配符:

robocopy "D:\project" "E:\backup" /E /XF *.log *.tmp

这条命令会排除所有 .log.tmp 结尾的文件。

3. 目录和文件一起排除

/XD/XF 写在一起即可:

robocopy "D:\project" "E:\backup" /E /XD node_modules .git /XF *.log *.tmp

这条命令的完整含义是:

  • D:\project 的内容复制到 E:\backup
  • 排除 node_modules.git 目录
  • 排除所有 .log.tmp 文件