删除空目录或整棵目录树,可跳过删除确认。
rd(同 rmdir)删除目录。默认只能删空目录;加 /s 删除指定目录及其所有子目录和文件,再加 /q 跳过确认。它适合清理构建产物、临时目录和已确认无用的旧目录。目录里有隐藏或系统文件也算“非空”,必须先处理属性或用 /s。
边界:rd 只删目录,删文件用 del;删除不进回收站。它不能删除当前目录或当前目录的祖先,必须先在别处落脚。现代 Windows 的 rd(含 /s)把目录符号链接和 junction 当作重解析点删除,只去掉链接本身,不递归目标;但 del <目录链接> 会把链接当目录并删除目标里的文件,两种命令不要混用。
Windows 10/11 与 Server 2016+ 的 rd 行为基本一致。CMD 的 rd 是内部命令;PowerShell 中 rd/rmdir 是 Remove-Item 的别名,没有 /s、/q 开关,递归要 -Recurse,强制要 -Force。
影响范围 / 先备份 / 如何回滚:rd /s 会删除指定目录及其全部内容,/q 不再确认,且不经过回收站。执行前先用 dir /S /A 核对路径,把重要数据复制到另一块盘或用卷影副本备份;误删后只能从备份、卷影副本或文件历史恢复,停止写入后可用恢复工具尝试,不能依赖回收站。
# 1. 删除一个已清空的目录
C:\> rd C:\temp\empty
# 2. 递归删除旧构建目录,逐项确认
C:\> rd /s C:\temp\oldbuild
# 3. 无人值守清理,删除整棵树且不确认
C:\> rd /s /q C:\temp\oldbuild
# 4. 带空格的路径要加引号
C:\> rd "C:\Users\me\AppData\Local\Temp\pkg"
# 5. 先用 if exist 判断,避免脚本因目录不存在而报错
C:\> if exist C:\temp\oldbuild rd /s /q C:\temp\oldbuild
# 6. 删除目录符号链接本身,不碰目标
C:\> rd C:\dev\assets-link
# 7. 删除前用 dir 预演整棵树,确认没有要保留的文件
C:\> dir /S /A C:\temp\oldbuild
rd /s /q 没有确认、没有回收站,是永久删除;先打印并核对完整路径,生产环境先备份或创建卷影副本。验证:把命令中的 rd 换成 dir /S /A 预演同一路径。cd .. 到无关目录再删。rd 报“目录不是空的”,即使资源管理器里看不到内容;隐藏/系统文件也算,先用 dir /A 查。rd 链接 删除,不要用 del 链接:del 会把目录链接当目录,删除目标里的文件。验证:dir /AL 看哪些是重解析点。rd /s /q C:\%EMPTY% 可能指向 C:\;执行前先 echo 或 if exist 校验拼接结果。/q。合上页面,先回答,再展开对照。
rd /s 删除的内容能从回收站恢复吗?应该靠什么恢复?rd C:\data 报“目录不是空的”?rd 还是 del?为什么?rd 不进回收站;靠备份、卷影副本、文件历史或停止写入后的恢复工具。dir /A 才能看见。rd 删链接本身;del 会把它当目录并删除目标里的文件。
小程序版
微信扫码,随时查命令