使用Powershell删除空文件夹

时间:2014-11-06 19:51:09

标签: .net powershell

我有以下脚本,我写了一个非常大的目录远程所有空文件夹,有很多子目录。当我在测试环境中使用它时,也就是包含空文件夹的C:\ Test,一些只有文件,一些只有文件夹,一些包含文件和文件夹,它完美地工作。但是当我在大目录上使用它时,它仍然会询问我是否要删除一些包含子项的文件夹。我希望它删除空文件夹并忽略包含子项的文件夹。关于我在这里做错了什么的想法?

function removeEmptyItems($inst)
{
    $testInst = (($inst.FullName) + '\' + "*")
        if(($inst.PSIsContainer) -eq $true)
            {
                if((Get-Item -Path ($testInst) -ErrorAction SilentlyContinue -Force) -eq $null)
                    {
                        Remove-Item -LiteralPath ($inst.FullName) -Force
                    }
            }
}

# Change The Value For Set-Location To Wherever You Want To Trim
Set-Location "\\server\folder\subfolder"
Get-ChildItem -ErrorAction SilentlyContinue -Recurse | 
%{ foreach ($inst in $_) { removeEmptyItems ($inst) } }

感谢您提供任何帮助,

P.S。如果你不想帮助并感觉像是投票,不要评论并告诉我为什么你这样做,这样我就能变得更好,我的问题就能得到解决。谢谢。

1 个答案:

答案 0 :(得分:0)

这里,这将清除没有确认的空目录:

gci $Path -force -recurse|
    Where{$_.psiscontainer -and (gci $_.FullName -force -recurse|?{!$_.psiscontainer}).count -eq 0}|
        Remove-Item -Recurse -force

只查找文件夹,然后检查每个文件夹以查看其中是否包含文件,如果文件夹中有0个文件,则会删除文件夹及其中的所有子文件夹。