【问题标题】:Search multiple folder to check if they are empty using powershell使用powershell搜索多个文件夹以检查它们是否为空
【发布时间】:2016-08-12 05:28:57
【问题描述】:

我有一堆目录

C:\RI1

C:\RI2

C:\RI3

... C:\RI21

如何检查它们是否都是空的?只有当其中一个或多个有文件时,我才想进一步了解脚本。如果没有,我想退出。我试过了,但它正在搜索文件夹名称并给我 21 作为答案

$directoryInfo = Get-ChildItem C:\RI* | Measure-Object
$directoryInfo.count

if ($directoryInfo.count -eq 0)
{

    Write-host "Empty"
}

else
{
    Write-host "Not Empty"
}

【问题讨论】:

    标签: windows shell powershell scripting


    【解决方案1】:

    当您运行Get-ChildItem C:\RI* 时,您将获得 C:\ 中的所有子项,并使用以“RI”开头的项过滤结果。答案是 21,因为 C:\ 中有 21 个以“RI”开头的文件夹。

    我建议您使用foreach 循环遍历所有文件夹。

    $folders = @("RI1", "RI2", "RI3")
    
    foreach ($folder in $folders)
    {
        $path = "C:\$folder"
        $directoryInfo = Get-ChildItem $path
        if ($directoryInfo.count -eq 0)
        {
            Write-Host "Empty"
        }
        else
        {
            Write-Host "Not Empty"
        }
    }
    

    【讨论】:

    • 问题是,他们可能会添加更多文件夹,而要添加的文件夹不在我们手中。我们所知道的是,它将从 RI 开始。有没有办法在不明确指定文件夹名称的情况下使用通配符进行循环?
    • 那么您还必须获取名称符合您要求的 C:\ 中的所有文件夹。 $folders = Get-ChildItem C:\ | ?{ $_.PSIsContainer } | where {$_.name.StartsWith("RI")}
    • 哇 - 如果这是它必须发生的唯一方式,我想我注定要失败。脚本执行需要很长时间。非常感谢大卫的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多