【问题标题】:fuser equivalent in Powershell?Powershell中的定影器等效项?
【发布时间】:2016-08-26 17:36:08
【问题描述】:

我想删除一个目录,但是一个进程正在使用它。

 mv : Access to the path 'C:\Users\mike\Documents\myapp\node_modules\' is denied.

Explorer 提到该目录正在使用中。是否有相当于 fuser 的 Windows Powershell?

请注意,这是一个 powershell 问题。我不想启动 GUI 应用程序。

【问题讨论】:

    标签: powershell directory file-handling fuser


    【解决方案1】:

    试试这个:

    $lockedFolder="C:\Windows\System32"
    Get-Process | %{$processVar = $_;$_.Modules | %{if($_.FileName -like "$lockedFolder*"){$processVar.Name + " PID:" + $processVar.id}}}
    

    这会查找文件夹中正在运行的每个进程。 (或在子目录中)

    使用此脚本,您将获得更多信息:

    $lockedFolder="C:\Windows\System32" 
    Get-Process | %{$processVar = $_;$_.Modules | %{if($_.FileName -like "$lockedFolder*"){$processVar.Name + " PID:" + $processVar.id + " FullName: " + $_.FileName }}}
    

    我认为没有与 fuser 等效的工具,但是必须先安装一个名为 handle.exe 的工具。

    PowerShell script to check an application that's locking a file?

    【讨论】:

    • 感谢@Eldo.Ob!我注意到这似乎只适用于完整路径 - 有什么方法可以让它使用相对文件夹名称?
    • 不客气 :) 不,这不是完整的路径。该脚本获取在给定目录或子目录中运行的所有进程。因此,如果您将“D:\”设置为 var $lockedFolder,您将获得在目录 D:\ 或子目录中运行的所有进程。试试看:$lockedFolder="C:\Windows\System32" Get-Process | %{$processVar = $_;$_.Modules | %{if($_.FileName -like "$lockedFolder*"){$processVar.Name + " PID:" + $processVar.id + " FullName: " + $processVar.FileName }}}
    • 哦,我搞错了:$lockedFolder="C:\Windows\System32" Get-Process | %{$processVar = $_;$_.Modules | %{if($_.FileName -like "$lockedFolder*"){$processVar.Name + " PID:" + $processVar.id + " FullName: " + $_.FileName }}}
    • 我的意思是你必须将 $lockedFolder 设置为一个完整的路径,而不是一个相对路径——我想把它变成一个简短的函数。
    【解决方案2】:

    这是 @Eldo.Ob 处理相关文件的出色答案的修改版本。

    function fuser($relativeFile){
      $file = Resolve-Path $relativeFile
      foreach ( $Process in (Get-Process)) {
        foreach ( $Module in $Process.Modules) {
          if ( $Module.FileName -like "$file*" ) {
            $Process | select id, path
          }
        }
      }
    }
    

    使用中:

    > fuser .\node_modules\
    
      Id Path
      -- ----
    2660 C:\Program Files\nodejs\node.exe
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      相关资源
      最近更新 更多