首页/系统/Windows 运维速查/openfiles 查看被打开的文件
磁盘与文件43 条

openfiles 查看被打开的文件

系统级“打开文件”查询:谁打开了共享上的哪个文件;本地跟踪需要先 /local on 并重启生效。

Windows 运维速查系统更新于 2026-10-13

openfiles 是干什么的

openfiles 用来查看系统中“哪个文件正被打开”:最典型的场景是共享目录里的文件提示正在被使用、无法删除或改名,需要找出是哪台机器、哪个账号占着它。它自带一个本地文件跟踪开关(/local on),开启后必须重启才生效,并会带来额外开销,属于排障时临时启用的手段。

基本信息

适用平台Windows 客户端与服务器(CMD 命令)
查询openfiles /query [/fo table|csv]
本地跟踪开关openfiles /local on|off(需重启生效,管理员权限)
过滤方式配合 findstr 按文件名过滤,或导出 CSV 后分析
补充工具资源监视器的磁盘页、Sysinternals handle、计算机管理的共享文件夹页

典型使用场景

  • 共享文件删不掉:查是哪台客户端持有了句柄
  • 维护前清理:确认没有用户还在使用待重启的服务目录
  • 排查日志被占用:应用无法轮转日志文件时定位占用者
  • 权限变更前评估:确认改权限的目录当前是否有打开的文件
  • 取证与审计:观察特定文件在特定时段的打开记录

常用示例

常用示例
:: 查看当前记录中被打开的文件
openfiles /query /fo table
:: 导出成 CSV 便于用表格筛选
openfiles /query /fo csv > D:\openfiles.csv
:: 按文件名过滤
openfiles /query | findstr /i "report.xlsx"
:: 启用本地文件跟踪(必须重启才生效)
openfiles /local on
shutdown /r /t 0
:: 排障结束后建议关掉
openfiles /local off
:: 资源监视器里看磁盘活动与关联进程
resmon

输出逐列读法

列含义排查价值
已识别的本地打开文件被跟踪到的文件路径确认目标文件是否在列表中
访问者打开文件的用户或会话定位到具体账号
类型本地或共享访问区分本机进程与网络客户端
标识句柄值与进程级工具交叉核对
/local on 之后必须重启才生效,这不是命令失败。由于跟踪有性能与日志量成本,只在排障期间开启,问题定位后及时用 /local off 关闭并重启。
本地临时文件被占用时,资源监视器与 Sysinternals handle 通常更直接:能同时看到进程、句柄类型与路径。openfiles 更擅长回答“共享目录上的文件被谁打开”这类问题。
共享文件的占用常来自离线同步、杀毒扫描或备份工具,而不一定是用户本人。看到占用者后先确认该客户端的角色,再决定是联系用户还是调整任务时间。

易错点

  • 开启本地跟踪后以为立刻生效:未重启时查询结果为空,被误判为“没人打开”
  • 长期开启文件跟踪:系统开销持续存在,日志与性能都受影响
  • 只看占用者姓名不确认来源:杀毒或备份进程导致的占用被当成用户行为,沟通方向错误
  • 在业务高峰强制中断占用:用户未保存的数据丢失,投诉与数据损失同时出现
  • 以为 openfiles 能看到全部句柄:它只覆盖被跟踪的范围,结论需要与其他工具互证

数据来源与参考

  • Microsoft Learn:openfiles
  • Microsoft Learn:打开文件跟踪

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌