使用 Powershell 删除多个特定命名的文件夹及其包含文件的子文件夹

使用 Powershell 删除多个特定命名的文件夹及其包含文件的子文件夹

因为我刚接触powershell,所以出现了以下情况。

我有一个路径 d:\folder,其中有很多子文件夹,其中包含子文件夹和文件。在此文件夹结构中,我想删除所有名为“Temp”、“History”、“Thumbnails”的文件夹以及该特定文件夹名称下的所有文件夹和文件。

到目前为止我已经使用了以下代码$path = "d:\folder\" Get-ChildItem $path -Recurse -Force -Directory | Where-Object {$_.Name -eq 'temp'} | % {Remove-Item $_.FullName}

这仅适用于 1 个文件夹。我找不到适用于多个文件夹的方法?使用此代码时,我弹出一个窗口,要求删除该文件夹。有没有办法让此消息保持沉默?

答案1

尝试使用-IncludeGet-ChildItem 上的参数,该参数可以接受要“过滤”的名称数组。这样您就不需要该Where-Object子句了。

此外,不需要ForEach-Object循环(别名%),因为 Remove-Item 可以立即对管道结果进行操作:

$path = 'd:\folder'
Get-ChildItem $path -Recurse -Force -Directory -Include 'Temp', 'History', 'Thumbnails' | 
Remove-Item -Recurse -Confirm:$false -Force -WhatIf

通过-Recurse向 Remove-Item 添加开关,当文件夹中有子项目时将不会弹出。

我添加了安全开关-WhatIf,因此文件夹实际上不会被删除。您只会在控制台中看到发生。
一旦你对此感到满意,删除-WhatIf开关即可开始删除

相关内容