繁体   English   中英

Powershell-删除旧文件夹,但不删除旧文件

[英]Powershell - delete old folders but not old files

我有以下代码可以保留在不再需要保留的旧文件夹之上

     Get-ChildItem -Path $path -Recurse -Force -EA SilentlyContinue| 
      Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } |
       Remove-Item -Force -EA SilentlyContinue
     Get-ChildItem -Path $path -Recurse -Force -EA SilentlyContinue| 
      Where-Object { $_.PSIsContainer -and (Get-ChildItem -Path 
       $_.FullName -Recurse -Force | Where-Object { !$_.PSIsContainer }) 
       -eq $null } | Remove-Item -Force -Recurse -EA SilentlyContinue

它将删除超过特定天数($ limit)的所有内容,包括文件和文件夹。 但是,我要做的只是删除旧文件夹及其内容。

例如,一天的文件夹中可能有一年的旧文件,但我想保留该文件夹和旧的文件。 上面的代码保留文件夹,但删除文件。 我要做的就是删除根目录中比$ limit更旧的文件夹(及其内容),否则不理会其他文件夹和内容。

提前致谢。

好看看这一点:

 Get-ChildItem -Path $path -Recurse -Force -EA SilentlyContinue| 
  Where-Object { !$_.PSIsContainer -and $_.CreationTime -ge $limit } |
   Remove-Item -Force -EA SilentlyContinue

基本上是说“所有不属于文件夹且早于指定文件夹的内容都将被删除”。 因此,您的第一步是删除它。

第二部分只是删除空文件夹,您可以按原样保留它,也可以添加到Where语句中以包含CreationTime:

 Get-ChildItem -Path $path -Recurse -Force -EA SilentlyContinue| 
  Where-Object { $_.PSIsContainer -and $_.CreationTime -lt $limit -and (Get-ChildItem -Path 
   $_.FullName -Recurse -Force | Where-Object { $_.CreationTime -lt $limit }) 
   -eq $null } | Remove-Item -Force -Recurse -EA SilentlyContinue

第二个Where语句返回比$ limit更新的文件和文件夹的列表,并且仅在该文件夹为null时才删除该文件夹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM