使用PowerShell,是否可以删除包含文件的目录而不提示确认操作?


当前回答

这招对我很管用:

Remove-Item $folderPath -Force  -Recurse -ErrorAction SilentlyContinue

因此,如果文件夹路径不存在,文件夹中的所有文件都将被删除,并且不会产生错误。

其他回答

Remove-Item -LiteralPath "foldertodelete" -Force -Recurse

或者,用更短的版本

rm /path -r -force

从PowerShell删除强制答案: help Remove-Item说:

这个cmdlet中的递归参数不能正常工作

要解决的命令是

Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse

然后删除文件夹本身

Remove-Item $Destination -Force 

下面是Michael Freidgeim答案的一个可复制粘贴的实现

function Delete-FolderAndContents {
    # http://stackoverflow.com/a/9012108

    param(
        [Parameter(Mandatory=$true, Position=1)] [string] $folder_path
    )

    process {
        $child_items = ([array] (Get-ChildItem -Path $folder_path -Recurse -Force))
        if ($child_items) {
            $null = $child_items | Remove-Item -Force -Recurse
        }
        $null = Remove-Item $folder_path -Force
    }
}

2018年更新

在当前版本的PowerShell中(在Windows 10和Windows 11上使用v5.1进行测试,在2023年),可以使用更简单的Unix语法rm -R .\DirName无声地删除目录.\DirName及其可能包含的所有子目录和文件。事实上,许多常见的Unix命令在PowerShell中的工作方式与在Linux命令行中相同。

也可以使用rm -R .\DirName\* (Jeff在评论中提到了)清理文件夹,但不能清理文件夹本身。

简而言之,我们可以使用rm -r -fo {folderName}递归地删除文件夹(删除里面的所有文件和文件夹)并强制