如何使用PowerShell保留特定文件夹并删除其余文件

时间:2014-07-10 08:42:30

标签: powershell

我正在尝试删除文件夹中的所有文件但是有一个名为图片的文件夹我想保留但不知道该怎么做。我使用以下脚本,它删除文件夹中的所有内容

 if ($message -eq 'y')
 {
 get-childitem "C:\test" -recurse | % { 
remove-item $_.FullName -recurse 

}

}

2 个答案:

答案 0 :(得分:0)

一种解决方案是使用类似的东西:

Get-ChildItem -Path "c:\test" -Recurse | Where-Object { $_.FullName -cnotmatch "\\Pictures($|\\)" -and (Get-ChildItem $_.FullName -Include "Pictures" -Recurse).Length -eq 0 } | Remove-Item -Recurse -ErrorAction SilentlyContinue;

我怀疑必须有一种更优雅的方式来做到这一点。这是做什么的:它以递归方式枚举 C:\ test 文件夹中的所有文件(Get-ChildItem),然后使用{{1}从结果列表中删除所有项目其中路径包含要排除的目录(使用正则表达式语法指定),或者当有问题的项目包含要排除的文件或目录的子项目时。结果列表将输入Where-Object以进行删除。应用Remove-Item开关以防止使用递归删除记录错误。

答案 1 :(得分:0)

Get-ChildItem $PSScriptRoot -Force| Where-Object {$_.Name -ne "Pictures"} | Remove-Item -Recurse

我刚试过这个,它对我有用。如果您想要更改删除的内容,只需更改"图片"。这使用$ PSScriptRoot作为路径,这是Powershell脚本的执行路径。您可以将其重命名为要删除的路径。