无法删除项目.该目录不为空

Hel*_*rld 29 powershell windows-server-2012-r2

我正在尝试删除包含子文件夹/文件的文件夹.

Remove-Item -Force -Recurse -Path $directoryPath
Run Code Online (Sandbox Code Playgroud)

我收到了错误 Cannot remove item. The directory is not empty.

PowershellScript.ps1executionPolicy不受限制.我尝试使用当前登录用户删除的根文件夹具有此文件夹的完全权限.

在我的本地电脑上,代码有效,但不在我的电脑上Windows Server 2012 R2.

Ric*_*ard 38

您可以尝试以下方法:

Remove-Item -Force -Recurse -Path "$directoryPath\*"
Run Code Online (Sandbox Code Playgroud)

但是-Recurse参数in Remove-Item并不总能正常工作,所以最好先将文件递归Get-ChildItem然后再将它们传递给它们Remove-Item.

Get-ChildItem $directoryPath -Recurse | Remove-Item -Force   
Run Code Online (Sandbox Code Playgroud)

  • @Richard文档只说`-Recurse`与`-Include`*一起使用时不可靠*. (5认同)
  • @KolobCanyon在"示例4:以递归方式删除子文件夹中的文件"一节中查看以下MSDN文章,它提到recurse参数不可靠.https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.management/remove-item (4认同)
  • 为什么`rm -Recurse`不可靠? (3认同)
  • 当尝试 `Get-ChildItem $directoryPath -Recurse | 时 PS 5.1 中的“Remove-Item -Force” 我收到确认提示,以确认我确实要删除目录,并且出现零星的“目录不为空”错误。我猜这可能是因为我正在删除非常大且复杂的文件结构。`获取-ChildItem $directoryPath -Recurse | Remove-Item -Force -Recurse` 似乎可以解决这些问题。 (3认同)

Kol*_*yon 9

文件在另一个程序中打开

我忘记了我在打开项目的情况下打开了 Visual Studio 并且出现了这个错误。

关闭与该目录关联的所有文件,以管理员身份运行 PowerShell,然后运行以下命令:

Remove-Item "C:\path\to\dir" -Recurse -Force

专家提示

您还可以运行此命令来打开文件资源管理器:

ii "C:\path\to\dir"

如果您右键单击并尝试删除它,它可能会给您一个比命令行更详细的错误。

  • +++1 是的,您必须确保目录中的任何文件都没有被锁定,否则您将收到此错误。我什至在 powershell 中打开子目录之一时看到此错误弹出。 (2认同)

Nic*_*aid 6

注意

Remove-Item -Force -Recurse -Path "C:\MyFolder"
Run Code Online (Sandbox Code Playgroud)

产生此错误,但是

Remove-Item -Force -Recurse -Path "C:\MyFolder\*"
Run Code Online (Sandbox Code Playgroud)

不是

所以别忘了魔法酱

  • 这只是产生了 N 次相同的错误,其中 N 是 MyFolder 中子文件夹的数量。 (5认同)