在PowerShell中强制删除目录及其所有子目录的最简单方法是什么?我在Windows 7中使用PowerShell V2。

我从几个来源了解到,最明显的命令,Remove-Item $targetDir -Recurse -Force,不能正确工作。这包括PowerShell V2在线帮助中的语句(使用Get-Help Remove-Item -Examples找到),声明:

...因为这个cmdlet中的递归参数是错误的,该命令使用get - childitem cmdlet来获取所需的文件,并使用管道操作符将它们传递给Remove-Item cmdlet…

我见过使用Get-ChildItem并将其输送到remove - item的各种示例,但这些示例通常基于过滤器删除一些文件集,而不是整个目录。

我正在寻找最干净的方法来吹出整个目录,文件和子目录,而不生成任何用户警告消息使用最少的代码量。如果简单易懂,那么一行代码最好。


当前回答

要删除包括文件夹结构在内的完整内容使用

get-childitem $dest -recurse | foreach ($_) {remove-item $_.fullname -recurse}

在remove-item中添加的-递归确保交互式提示被禁用。

其他回答

虽然rm -r的结果很好,但下面的方法更快:

$fso = New-Object -ComObject scripting.filesystemobject
$fso.DeleteFolder("D:\folder_to_remove")

为了测试这一点,你可以很容易地创建一个包含X个文件的文件夹(我使用:Disk Tools来快速生成文件)。

然后运行每个变量,使用:

Measure-Command {rm D:\FOLDER_TO_DELETE -r}
Measure-Command {Remove-Item -Path D:\FOLDER_TO_DELETE -Recurse -Force}
Measure-Command {rd -r FOLDER_TO_DELETE }
$fso.DeleteFolder("D:\folder_to_remove")
Measure-Command {$fso.DeleteFolder("D:\FOLDER_TO_DELETE")}

我的测试文件夹上的结果是:

Remove-Item - TotalMilliseconds : 1438.708
rm - TotalMilliseconds : 1268.8473
rd - TotalMilliseconds : 739.5385
FSO - TotalMilliseconds : 676.8091

结果各不相同,但在我的系统上,获胜者是fileSystemObject。我建议在目标文件系统上进行测试,看看哪种方法最适合您。

我使用:

rm -r folderToDelete

这对我来说就像一个咒语(我从Ubuntu偷来的)。

在PowerShell $profile中添加一个自定义函数:

function rmrf([string]$Path) {
    try {
        Remove-Item -Recurse -ErrorAction:Stop $Path
    } catch [System.Management.Automation.ItemNotFoundException] {
        # Ignore
        $Error.Clear()
    }
}

这是rm -rf行为最准确的表示。

很简单:

remove-item -path <type in file or directory name>, press Enter

受上面@john-rees的启发,我采取了另一种方法——尤其是当他的方法在某种程度上开始对我失败时。基本上递归的子树和排序文件的路径长度-删除从最长到最短

Get-ChildItem $tfsLocalPath -Recurse |  #Find all children
    Select-Object FullName,@{Name='PathLength';Expression={($_.FullName.Length)}} |  #Calculate the length of their path
    Sort-Object PathLength -Descending | #sort by path length descending
    %{ Get-Item -LiteralPath $_.FullName } | 
    Remove-Item -Force

关于-LiteralPath魔法,这里有另一个可能困扰你的问题:https://superuser.com/q/212808