2016-03-11 132 views
0

我有下面的代码,以保持对旧文件夹的顶部,我不再想保留PowerShell的 - 删除旧文件夹,而不是旧的文件

 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)包括文件和文件夹。 但是,我之后只是删除旧文件夹及其内容。

例如,一天的旧文件夹可能有一个文件,但是我想保留该文件夹和旧文件。上面的代码保留文件夹但删除文件。我想要做的只是删除超过$限制的根目录中的文件夹(及其内容),否则将其他文件夹和内容单独保留。

在此先感谢。

回答

0

那么看看这个位:

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

它基本上是说:“一切都没有一个文件夹,不是被删除旧的规定”。所以你的第一步就是去除那个。

第二部分是只删除空文件夹,你可以把它原样,或者你可以添加到Where语句,以包括创建时间:

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更新,并且只有在文件夹为空的情况下才会删除该文件夹。

+0

请原谅我的无知,我不是一个编码器!所以我删除第一行,它不再删除文件。但第二行不删除旧文件夹,因为它们不是空的。我需要的是如何删除非空的旧文件夹。 – user1753362

+0

嗯...你打算如何删除文件夹,但不是其中的文件? –

+0

OH等待,因此只有在文件夹及其内容超出限制时才想要删除文件夹。对,给我一秒钟。 –