Получить имя каталога, имя папки и количество всех файлов - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь создать сценарий для чтения каждого имени папки в каталоге, количества файлов zip в каждой папке и затем количества файлов в каждом zip. Вывод должен быть записан в выходной файл.

Я придумал ниже:

 $ZipRoot = 'C:\Users\Main Folder'
 $ZipFiles = Get-ChildItem -Path $ZipRoot -Recurse -Filter '*.zip'
 $Shell = New-Object -ComObject Shell.Application
 $Results = foreach( $ZipFile in $ZipFiles ){
     $FileCount = $Shell.NameSpace($ZipFile.FullName).Items() |
            Measure-Object |
            Select-Object -ExpandProperty Count
    [pscustomobject]@{
      FullName = $ZipFile.FullName
      FileCount = $FileCount
      }
    }
 $Results |
 Export-Csv -Path 'C:\Users\mlkstq\Desktop\FFNS\ZipReport.csv' -NoTypeInformation

Вывод

            Fullname                                 Filecount
            C:\Users\Main Folder\Subfolder1\Zip1     3
            C:\Users\Main Folder\Subfolder2\Zip2     5

Проблема в том, что у меня проблемы получить имя подпапки в файле putput. Также вы хотите подстроку имени подпапки, чтобы получить правильное имя. Что бы я ни пытался, это не помогает.

1 Ответ

0 голосов
/ 12 апреля 2020

Если я вас правильно понял, я бы сделал это следующим образом:

$ZipRoot = 'C:\Users\Main Folder'
$Shell = New-Object -ComObject Shell.Application

$subFolderList = Get-ChildItem -Path $ZipRoot -Recurse -Directory
$Result = foreach ($subFolder in $subFolderList) {
    $zipFileList = Get-ChildItem -Path $subFolder.FullName -File -Filter *.zip
    foreach ($ZipFile in $zipFileList) {
        [PSCustomObject]@{
            subFolder     = $subFolder.FullName
            zipFilesCount = $zipFileList.Count
            zipFile       = $ZipFile.Name
            fileCount     = $Shell.NameSpace($zipFile.FullName).Items().Count
        }
    }
}
Format-Table -InputObject $Result -AutoSize -InputObject $Result
Export-Csv -InputObject $Result -Path 'C:\Users\mlkstq\Desktop\FFNS\ZipReport.csv' -NoTypeInformation

На мой взгляд, не очень хорошо, когда счетчик zip-файлов в каждой подпапке повторяется для каждого строка подпапки

...