因为我是PowerShell的新手,所以我有以下情况。
我有一个路径 d:\folder 有很多子文件夹和子文件夹 en 文件。在此文件夹结构中,我想删除名称为“Temp”、“History”、“Thumbnails”的所有文件夹以及该特定文件夹名称下的所有文件夹 en 文件。
到目前为止,我已经使用了以下代码$path = "d:\folder\" Get-ChildItem $path -Recurse -Force -Directory | Where-Object {$_.Name -eq 'temp'} | % {Remove-Item $_.FullName}
这仅适用于 1 个文件夹。我找不到多个文件夹的方式?使用此代码,我会弹出询问删除文件夹的问题。有没有办法让这种沉默?
尝试使用-Include
Get-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
开关以开始删除
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句