我想删除一个目录,但一个进程正在使用它。
mv : Access to the path 'C:\Users\mike\Documents\myapp\node_modules\' is denied.
Explorer 提到该目录正在使用中。是否有相当于 Windows Powershell 的fuser
?
请注意,这是一个 powershell 问题。我不想启动 GUI 应用程序。
我想删除一个目录,但一个进程正在使用它。
mv : Access to the path 'C:\Users\mike\Documents\myapp\node_modules\' is denied.
Explorer 提到该目录正在使用中。是否有相当于 Windows Powershell 的fuser
?
请注意,这是一个 powershell 问题。我不想启动 GUI 应用程序。
试试这个:
$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 的工具。
这是@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