我正在尝试使用PowerShell删除一组特定文件夹中的文件。我的代码当前如下所示:
$tempfolders = @(
"C:\Windows\Temp\*"
"C:\Documents and Settings\*\Local Settings\temp\*"
"C:\Users\*\Appdata\Local\Temp\*"
)
Remove-Item $tempfolders -Recurse -Force -ErrorAction SilentlyContinue
我要使用以下公式将新文件夹添加到该列表:
"C:\users\*\AppData\Local\Program\**\Subfolder"
其中**
可能是多个未知长度的子文件夹。例如,它可以是settings\subsettings
,也可以是folder\settings\subsettings
。有办法吗?
答案 0 :(得分:1)
您可以将每个文件的完整路径提供给正则表达式;这将仅返回与您的格式匹配的文件,然后您可以将其通过管道传递到Remove-Item:
ls "C:\Users" -Recurse -Hidden | Where-Object { $_.FullName -imatch '^C:\\users\\([^\\]+)\\AppData\\Local\\Program\\(.*)\\Subfolder' }
因为正则表达式被认为是只写的,所以需要一些解释:
([^\\]+)
表示除反斜杠外的任何一个或多个字符.*
表示零个或多个字符答案 1 :(得分:0)
您可以使用Get-ChildItem -Directory -Recurse
,
这将完全满足您的要求。将其从数组传递到Remove-Item
@("C:\Windows\Temp\*", "C:\Documents and Settings\*\Local Settings\temp\*", "C:\Users\*\Appdata\Local\Temp\*") |
Get-ChildItem -Directory -Recurse -Force -ErrorAction SilentlyContinue |
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
PowerShell管道|
中的提示是关键。我们喜欢链接命令的PowerShell。