Powershell-删除已筛选文件夹中的文件



我正试图弄清楚如何从Get-Childentity cmdlet中删除多个筛选文件夹中的文件。

我想要的是找到所有名为"的文件夹;高速缓存";在特定路径中(获取子项(。然后移除缓存文件夹内的文件。

Powershell版本:5.1

下面的代码可能不起作用,可能是通配符选择不正确等等。?

Get-ChildItem "$env:LOCALAPPDATA" -recurse -Filter "Cache*" | foreach ($_) {remove-item $_.fullname -WhatIf -recurse}

希望有人能帮我,我在这方面有点迟钝:(

谢谢!

由于您使用的是-Recurse标志,因此不需要在过滤器中使用。以下过滤器将为您提供所有包含单词缓存的项目(包括文件和目录((如blacachebla(

Get-ChildItem $env:LOCALAPPDATA -recurse -Filter "*Cache*" 

或者,当无法找到所有名为"的文件夹和文件时,可以使用-ErrorAction开关以静默方式继续;高速缓存";。

Get-ChildItem $env:LOCALAPPDATA -recurse -Filter "Cache" -ErrorAction SilentlyContinue

感谢您的解释。

我不需要使用-Filter "*Cache*"。我想要名称为Cache的文件夹。

如果我使用Get-ChildItem $env:LOCALAPPDATA -recurse -Filter "Cache" -ErrorAction SilentlyContinue | % { $_.FullName }

输出例如:

C:UsersxxxxxxxxCache
C:UsersxxxxxxCache
C:UsersxxxxxCache
C:UsersxxxxAcrobatCache

从那里,我想删除所有名为Cache的文件夹中的文件和文件夹,我刚刚从Get-ChildItem中过滤

内部示例:C:\Users\x\xxxx\Arobat\Cache有一些文件和文件夹,如data_0、data_1、data_2、GPUCache(文件夹(等。我想删除它们,但每个找到的缓存文件夹(foreach(都是

希望你能理解我的想法。

谢谢!

经过一番挖掘,我找到了解决方案。

以下代码对我有效:

$base_dir = "$env:LOCALAPPDATA"
$name     = 'Cache'
Get-ChildItem $base_dir -Recurse -Force | Where-Object {
$_.PSIsContainer -and
$_.Name -eq $name
} | Select-Object -Expand FullName | ForEach-Object {
Remove-Item "$_*" -Recurse -whatif
}

(删除-whatif,删除文件(

最新更新