首页 > 解决方案 > 使用 powershell 对文件进行计数,但在计数和 OCR 扩展名中排除子文件夹

问题描述

我有一个像这样的目录:\OCRELEASE\Images$。该目录包含大约 200 个子文件夹,每个子文件夹还包含子文件夹。所以我会: \OCRELEASE\Images$\Image1\0-200 \OCRELEASE\Images$\Image2\0-200 \OCRELEASE\Images$\Image3\0-200

在每个 0-200 中,最多可以包含 200 个文件。大多数文件没有扩展名,并标记为 1、2、3 等。我试图获得在其所有子文件夹中 \OCRELEASE\Images$\Image1 中存在多少文件的总数。我想排除任何具有 .OCR 扩展名的文件,我只想计算没有扩展名的文件(在实际计数中不包括文件夹,只包括其文件)。我有以下内容:

$FOLDER_ROOT = "\\mchocrelease\images$\images21"
$OUTPUT_LOCATION = "C:\imnet\OUT.txt"
Function DirX($directory)
{
    Remove-Item $OUTPUT_LOCATION

    foreach ($singleDirectory in (Get-ChildItem $directory -Recurse -Directory))
    {
        $count = Get-ChildItem $singleDirectory.Name -File | Measure-Object | %{$_.Count}
        $summary = $singleDirectory.FullName+"    "+$count+"    "+$singleDirectory.LastAccessTime
        Add-Content $OUTPUT_LOCATION $summary
    }
}
DirX($FOLDER_ROOT)

输出看起来很棒,但它分解了每个单独的子文件夹及其计数。我只想计算以下所有文件(不包括 OCR):\OCRELEASE\Images$\Image1

任何帮助表示赞赏

标签: powershellcount

解决方案


如果您只想要所有不存在扩展名的文件的总数,\\mchocrelease\images$\images1那么这将满足您的要求。

Get-ChildItem -Path \\mchocrelease\images$\images1 -File -Recurse | where {$_.Extension -eq ''} | measure | select -ExpandProperty count

根据您的示例脚本,您似乎想要的不止这些。如果是,请修改您的帖子。


推荐阅读