del 是什么
del 用来删除文件,支持通配符与属性筛选,可以强制删除只读文件,也可以递归删除子目录中的匹配文件。它有两个必须记住的特性:删除不进入回收站,以及它只能删文件、不能删目录本身。正因为不进回收站且默认不确认,这条命令在脚本里属于高风险操作。稳妥的做法永远是同一个套路——先把打算使用的参数原封不动地交给目录列表命令,看清会命中哪些文件,再切换成删除动作。
基本信息
| 适用平台 | Windows CMD(PowerShell 中的同名命令是别名,行为不同) |
|---|---|
| 语法 | del [/p] [/f] [/s] [/q] [/a[:属性]] <文件名或通配符> |
| 参数含义 | /p 逐个确认、/f 强制删除含只读、/s 递归子目录、/q 静默、/a 按属性筛选 |
| 删除范围 | 只删文件,目录结构需要用删除目录树的命令处理 |
| 回收站 | 不进回收站,删除后无法通过常规方式还原 |
| 权限 | 删除受保护目录下的文件需要管理员权限 |
典型使用场景
- 清理临时文件:按扩展名批量删除过期内容
- 日志轮转:删除超过保留期的日志分卷
- 病毒处置:删除带隐藏属性的可疑文件(配合隐藏属性筛选)
- 脚本收尾:任务结束后清理中间产物
- 按属性筛选:只删除只读或隐藏属性的文件,避免误伤普通文件
- 预演核对:把删除参数先交给目录列表命令预览命中清单
常用示例
常用示例
:: 预演:先看清会命中哪些文件
dir /s /b D:\Temp\*.tmp
:: 强制静默删除临时文件
del /f /q D:\Temp\*.tmp
:: 递归删除日志分卷
del /s /q D:\Logs\*.log
:: 只删隐藏属性的文件(病毒清理常见)
del /a:h /f D:\Udisk\*.ini
:: 只删只读文件
del /a:r /f /q D:\Data\*.old
:: 查看删除命令的返回码
echo %ERRORLEVEL%参数速查
| 参数 | 作用 | 风险提示 |
|---|---|---|
| /p | 逐个确认后删除 | 交互场景可用,脚本中会挂住 |
| /f | 强制删除,含只读文件 | 绕过只读保护,误删后无法恢复 |
| /s | 递归子目录 | 范围迅速扩大,务必先预览 |
| /q | 静默模式,不询问 | 脚本默认行为,出错也无提示 |
| /a | 按属性筛选(隐藏、只读、系统等) | 写错属性会删到不该动的文件 |
| 通配符 | 星号与问号匹配文件名 | 范围最不可控的一种写法 |
带通配符的删除会直接清场且不通知回收站。养成固定习惯:先把相同参数交给目录列表命令预览命中清单,确认后再把开头换成删除命令执行,两个命令的参数完全一致。
删除正在被程序占用的文件会失败并给出占用提示,这是保护机制而非故障。需要删除时先定位占用进程,或者停掉相关服务后再执行。