1

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

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

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

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

4

2 回答 2

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 脚本?

于 2016-08-25T14:54:27.867 回答
0

这是@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
于 2016-08-26T09:36:08.023 回答