在Windows操作系统中,命令提示符(CMD)是一个强大的工具,允许用户通过文本命令与系统交互,删除文件或文件夹是日常管理和维护系统时常用的操作,CMD中的删除命令主要包括del
(用于删除文件)和rd
或rmdir
(用于删除目录),这些命令虽然功能基础,但通过结合不同的参数可以实现灵活高效的文件管理,以下将详细介绍这些命令的语法、参数、使用场景及注意事项,帮助用户全面掌握CMD中的删除操作。

删除文件命令:del
与erase
del
和erase
是CMD中完全等效的命令,均用于删除一个或多个文件,其基本语法为:
del [/p] [/f] [/s] [/q] [/a[[:]attributes]] names
erase [/p] [/f] [/s] [/q] [/a[[:]attributes]] names
names
可以是文件名、包含通配符(如或)的文件名模式,或文件路径,主要参数包括:
/p
:删除前逐个确认每个文件。del /p *.tmp
会先显示要删除的.tmp文件,并提示用户确认(输入Y或N)。/f
:强制删除只读文件,默认情况下,del
无法删除只读文件,使用/f
可覆盖这一限制。del /f readonly.txt
会直接删除只读文件readonly.txt
。/s
:删除指定目录及其子目录中的所有匹配文件。del /s C:\Temp\*.log
会递归删除C:\Temp及其子目录下所有.log文件。/q
:安静模式,删除时不提示确认,适用于批量操作,避免手动确认的繁琐。del /q *.bak
会直接删除当前目录下所有.bak文件,不询问用户。/a
:根据文件属性删除文件,可指定的属性包括:r
:只读文件h
:隐藏文件s
:系统文件a
:存档文件- 表示非指定属性。
del /a:rh *.tmp
会删除所有只读且隐藏的.tmp文件;del /a:-s
会删除所有非系统文件。
使用示例:
- 删除单个文件:
del document.txt
,删除当前目录下的document.txt
。 - 批量删除文件:
del *.temp
,删除所有扩展名为.temp的文件。 - 删除隐藏文件:
del /a:h hidden_file.dat
,删除隐藏文件hidden_file.dat
。 - 递归删除目录下所有文件:
del /s C:\Logs\*.log
,删除C:\Logs及其子目录下的所有.log文件。
注意事项:
del
命令无法删除目录,需使用rd
命令删除目录。- 使用通配符(如)删除文件时需谨慎,特别是结合
/s
参数时,可能误删大量文件,建议先使用dir
命令预览要删除的文件列表。 - 无法恢复已删除的文件(除非使用第三方工具),重要文件建议先备份。
删除目录命令:rd
与rmdir
rd
(Remove Directory)和rmdir
是等效命令,用于删除空目录,其基本语法为:
rd [/s [/q]] [/a[:attributes]] directory
rmdir [/s [/q]] [/a[:attributes]] directory
directory
是要删除的目录路径,主要参数包括:

/s
:删除指定目录及其所有子目录和文件,相当于强制删除整个目录树。rd /s C:\Temp\OldData
会递归删除OldData
目录及其内容。/q
:安静模式,删除目录时不确认,与del /q
类似,适用于脚本或自动化任务。rd /s /q C:\Temp\OldData
会静默删除整个目录。/a
:根据目录属性删除(较少使用,目录属性通常为只读或隐藏)。
使用示例:
- 删除空目录:
rd empty_folder
,删除当前目录下的空目录empty_folder
。 - 递归删除非空目录:
rd /s C:\Temp\OldData
,先提示确认后删除OldData
目录及其所有内容。 - 静默删除非空目录:
rd /s /q C:\Temp\OldData
,不提示确认直接删除整个目录。
注意事项:
rd
命令只能删除空目录,若目录中有文件或子目录,需使用/s
参数。- 使用
/s
参数时,默认会提示用户确认(除非结合/q
),避免误删重要目录。 - 无法删除当前目录(即用户所在的目录),需先切换到其他目录。
删除命令的进阶应用
结合管道符和findstr
筛选删除
删除包含“old”关键字的.txt文件:
dir /b *.txt | findstr "old" | del /f /q
解释:dir /b
只显示文件名,findstr "old"
筛选包含“old”的文件名,通过管道传递给del
命令执行删除。
使用for
循环批量删除
删除C:\Logs目录下所有修改时间超过30天的.log文件:
forfiles /p C:\Logs /m *.log /d -30 /c "cmd /c del @path"
解释:forfiles
命令用于批量处理文件,/d -30
指定30天前的文件,/c
执行删除命令。

删除符号链接或 junction 点
符号链接(Symbolic Link)和目录联接(Junction)的删除方式与普通目录相同,但需注意:
- 使用
rd /s
删除符号链接时,仅删除链接本身,不删除目标目录。 - 若目标目录被误删,可能导致链接失效。
删除命令的替代方案:powerShell
对于更复杂的文件管理任务,Windows PowerShell提供了更强大的命令(如Remove-Item
),支持更灵活的筛选和操作。
# 删除所有只读文件 Get-ChildItem -Path .\ -File -ReadOnly | Remove-Item -Force # 递归删除目录(包括非空目录) Remove-Item -Path C:\Temp\OldData -Recurse -Force
PowerShell的语法更直观,且支持丰富的对象操作,适合高级用户。
常见错误与解决方法
-
错误提示“拒绝访问”:
原因:文件被占用或权限不足。
解决:关闭占用文件的程序,或以管理员身份运行CMD。 -
错误提示“目录不是空的”:
原因:尝试用rd
删除非空目录时未使用/s
参数。
解决:添加/s
参数,或先删除目录内容。 -
误删文件后的恢复:
CMD本身不提供恢复功能,可使用第三方工具如Recuva或TestDisk尝试恢复。
相关问答FAQs
问题1:如何使用CMD删除包含空格的文件名?
解答:若文件名中包含空格(如my document.txt
),需用引号将路径括起来。del "my document.txt"
,若路径较长,建议使用短路径名(通过dir /x
查看),如del "mydocu~1.txt"
。
问题2:如何强制删除系统保护文件(如页面文件或休眠文件)?
解答:系统保护文件(如pagefile.sys
或hiberfil.sys
)通常被占用或受保护,直接删除可能导致系统异常,若需删除,需先禁用相关功能:
- 禁用页面文件:在“系统属性”->“高级”->“性能设置”->“高级”->“虚拟内存”中设置为“无分页文件”。
- 禁用休眠:以管理员身份运行CMD,执行
powercfg -h off
。
完成后再尝试删除文件,注意:操作前需确保了解相关风险,避免系统不稳定。