暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Windows 下如何查看文件被哪个进程占用

生有可恋 2022-10-25
9835

在 linux 下可以通过 lsof 查看文件占用,Windows 下有什么工具可以快速定位文件被哪个进程占用?

当文件被某个进程打开后,当删除文件时会提示无法删除:

这里演示的是 pdf 文件被进程占用的情况,在提示框中可以知道是被 “Kingsoft Pdf" 占用。在现实环境中这里可能并不会显示有用的程序名。我们此时需要定位到进程ID,必要时通过进程ID杀掉进程来解除资源占用。

微软的 handle 程序可以快速定位文件或文件夹的占用情况。handle 程序下载地址:

  • https://download.sysinternals.com/files/Handle.zip

这是一个命令行程序,需要在命令行 cmd 中执行该程序。默认会打印所有的句柄信息:

    handle64.exe -nobanner

    参数 -nobanner 是所有 sysinternals 工具集中的程序都有的参数,默认输出会打印程序的版权信息,可以通过 -nobanner 关闭版权信息。

    使用 handle 可以对文件和目录进行检索,查看文件或目录被哪个进程占用,使用方法是在 handle 命令后面接文件名或目录的绝对路径:

      C:\> handle64.exe -nobanner  数据说明.pdf
      wpspdf.exe pid: 23848 type: File 7DC: C:\Users\Administrator\Downloads\Handle\????.pdf


      C:\> handle64.exe -nobanner C:\Users\Administrator\Downloads\Handle
      explorer.exe pid: 11940 type: File 944: C:\Users\Administrator\Downloads\Handle
      explorer.exe pid: 11940 type: File 5B4C: C:\Users\Administrator\Downloads\Handle
      cmd.exe pid: 22520 type: File 98: C:\Users\Administrator\Downloads\Handle
      wpspdf.exe pid: 23848 type: File 7DC: C:\Users\Administrator\Downloads\Handle\????.pdf
      handle64.exe pid: 9672 type: File 44: C:\Users\Administrator\Downloads\Handle

      直接在 handle 程序后面接被占用的文件名即可定位到进程。如果文件名含中文,handle 程序的输出会有乱码,这个不影响使用。handle 命令可以定位到进程 ID 以及进程的可执行文件名,通过这两个要素我们就可以关闭进程,解除资源占用了,我们可以在任务管理器或 tasklist 中查看进程是否存在。

        C:\> tasklist fi "pid eq 23848"


        映像名称 PID 会话名 会话# 内存使用
        ========================= ======== ================ =========== ============
        wpspdf.exe 23848 Console 2 172,076 K


        C:\> tasklist fi "IMAGENAME eq wpspdf.exe"


        映像名称 PID 会话名 会话# 内存使用
        ========================= ======== ================ =========== ============
        wpspdf.exe 23848 Console 2 172,076 K

        我们可以使用 tasklist 命令查看进程信息,同时也可以使用 taskkill 命令杀掉进程,指定进程ID或可执行文件名都可以杀进程,以下命令二选一即可:

          C:\> taskkill /f /pid 23848 
          C:\> taskkill /f /im wpspdf.exe

          如果想在 handle 程序中查看对应进程的完整信息,可以通过进程ID或进程可执行文件名进行查看,以下两个命令效果相同:

            handle64.exe -nobanner -p 23848 
            handle64.exe -nobanner -p wpspdf.exe

            除了使用 taskkill 杀进程,也可以使用 handle 程序杀掉占用文件的句柄,其中要用到进程ID和句柄号(16进制)。

              handle64.exe -nobanner -p 23848 -c 7DC

              全文完。

              如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。

                     

              文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论