dir 是什么
dir(directory 的缩写)是 Windows 命令提示符下最基础的目录列表命令,列出指定目录里的文件、子目录及其大小与时间戳。它支持通配符、属性筛选、递归遍历与多种排序,是文件排查、容量确认和批量清点的第一步。纯 CMD 环境、批处理脚本和远程命令行会话里都随手可用。需要留意的是,在 PowerShell 里 dir 只是 Get-ChildItem 的别名,输出的是对象而不是文本,两者行为并不相同。
基本信息
| 适用平台 | Windows CMD(Windows 7 及以上;PowerShell 中的 dir 为别名) |
|---|---|
| 语法 | dir [盘符:][路径][文件名] [/A[:属性]] [/B] [/S] [/O[:排序]] [/T[:时间字段]] [/P] [/W] |
| 常用参数 | /A 按属性筛选(h 隐藏、s 系统、d 目录、- 取反)、/S 递归、/B 简洁模式、/O 排序、/T 选时间字段、/P 分屏 |
| 默认行为 | 不显示隐藏与系统文件,按名称排序,末尾输出合计行 |
| 输出构成 | 日期时间、<DIR> 标记或文件字节数、文件名,末尾 File(s) 与 Dir(s) 统计 |
典型使用场景
- 确认目录里到底有哪些条目,排查「明明有文件却看不到」时加 /A
- 按修改时间倒序查看最近被改动的文件(/O-D /T:W)定位异常变更
- 递归列出某类文件的完整路径(/S /B *.log)交给其它命令继续处理
- 统计目录下的文件数量与总大小,快速判断空间占用
- 在批处理里判断某类文件是否存在,配合 if exist 或 for 循环使用
- 清理前的预演:把删除命令的参数原样加给 dir,先看清会命中哪些文件
常用示例
常用示例
dir
:: 显示全部条目,含隐藏与系统文件,按修改时间从新到旧
dir /A /O-D
:: 递归只列 .log 文件的完整路径
dir /S /B *.log
:: 只看文件、不看目录,按大小从大到小排
dir /A:-D /O-S
:: 分屏查看,避免刷屏
dir /P
:: 用 for 统计文件总数
dir /S /B /A-D > %TEMP%\list.txt
find /c /v "" %TEMP%\list.txt输出逐列读法
| 列或字段 | 含义 | 异常判断 |
|---|---|---|
| 日期时间 | 条目的修改时间;用 /T 可切换创建时间(C)、访问时间(A)、修改时间(W) | 时间与预期严重不符说明数据被改过或被还原 |
| <DIR> | 该条目是目录,目录不显示大小 | 目录被误判成文件时先看这一列 |
| 字节数 | 文件的逻辑大小 | 出现远大于预期的单个文件时优先核查 |
| 文件名 | 条目名称,含扩展名;含空格时需引号包裹 | 出现乱码或超长命名时优先排查 |
| File(s) | 命中的文件数量与字节合计 | 与外部统计对不上时先怀疑隐藏项被排除 |
| Dir(s) | 命中的子目录数量与所在卷可用空间 | 可用空间接近 0 就是写失败排查的起点 |
漏文件排查的固定动作:默认不显示隐藏与系统属性的条目,怀疑有文件却看不到时先加 /A。共享目录和 U 盘上利用隐藏属性藏文件是常见手法。
dir 的列宽随系统语言与终端宽度变化,中英文系统的输出列不同,按行号或字符位置解析很容易碎。需要稳定字段请用 PowerShell 取对象属性或使用 forfiles。
属性与排序参数
| 参数 | 取值 | 说明 |
|---|---|---|
| /A | d 目录、h 隐藏、s 系统、r 只读、a 存档 | 可叠加,单独写 /A 表示显示全部属性条目 |
| /A 取反 | 如 /A:-D 表示排除目录 | 负号写在属性字母前表示取反 |
| /O | n 名称、s 大小、e 扩展名、d 时间、g 目录优先 | 前面加负号即倒序,如 /O-S 按大小从大到小 |
| /T | c 创建时间、a 访问时间、w 修改时间 | 与 /O 搭配决定按哪个时间字段排序 |
| /B | 只输出路径,去掉表头与合计行 | 结果便于交给其它命令或写入文件 |
| /S | 递归所有子目录 | 范围大时先限定起始路径,避免全盘扫描 |
在 PowerShell 里执行 dir 得到的是 FileInfo 与 DirectoryInfo 对象,可直接访问 Length、LastWriteTime 等属性;此时 /A、/S 这类 CMD 开关不再适用,应改用 -Force、-Recurse 与 -Filter。