如何使用PowerShell删除所有具有特定名称的文件夹

3
我收到了一个文件夹,需要删除所有名称类似于“tempspecssuite_”的子文件夹。我的文件夹结构如下所示。我想递归删除名称类似于tempspecssuite_的文件夹。尝试使用下面的命令但没有成功。
Get-Childitem -path C:\folder1 -Recurse | where-object {$_.Name -ilike "*tempspecssuite_*"} | Remove-Item -Force -WhatIf

1
你漏掉了下划线 $ .Name 应该是 $ _.Name - undefined
1
谢谢Itchydon..我的问题中有个拼写错误,但问题是我没有删除"Whatif"。 - undefined
1个回答

3
管道对象需要使用$_而不是$进行引用,如下所示:
Get-Childitem -Path C:\folder1 -Recurse | Where-Object {$_.Name -ilike "*tempspecssuite*"} | Remove-Item -Force -WhatIf

这也可以用$PSItem引用,或者使用-PipelineVariable常规参数设置为自定义变量。您可以在about_pipelinesabout_objectsabout_automatic_variables中了解更多信息。

你可以使用Get-ChildItem-Filter参数来简化上述内容,该参数也接受通配符:
Get-ChildItem -Path C:\folder1 -Directory -Filter tempspecssuite_* -Recurse | Remove-Item -Force -Recurse -WhatIf

这使得 Get-ChildItem 能够在检索文件时进行筛选,而不是之后使用 Where-Object 进行筛选。

您还可以通过 -Directory 开关限制筛选,因为我们只关心删除目录。


谢谢Road Runner!现在它正在识别目录,但是它没有删除文件夹。我可能漏掉了什么吗? - undefined
@DevX 你还在使用 -WhatIf 吗?那只会告诉你命令的效果,但不会实际删除。移除这个参数以执行真正的删除。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接