Powershell Count List Folders
Date: 2021-10-25
Language: Powershell
Code Link:
Background
Used this for a minor work project to count and list all subfolders (of specified string pattern) under the first sub-directories under a main directory.Problem
Count all the subfolders under first subfolder under a main folder (including sub-folders) and then list them.Solution
Provided belowAnswer
$MainDir = "[path_to_dir]\[MainFolder]"
$NameToFind = "S\d\d\d\d\d--"
$fileRecord = "koala-is-so-smart"
function MainScript {
Write-Output "Start Script"
$today = Get-Date -Format "yyyy-MM-dd"
Write-Output "Check end of line"
if ($MainDir -notmatch '/$') {
$MainDir = "$MainDir/"
}
Write-Output "Get subfolders"
$mainDirs = Get-ChildItem -Path $MainDir -Directory
$fileListResult = New-Object Collections.Generic.List[String]
$folderCountList = New-Object Collections.Generic.List[String]
Write-Output "Loop subfolders"
foreach ($dir in $mainDirs) {
$dirName =$dir.Name
#Write-Output "Matching subfolders in subfolders"
$subDirs = Get-ChildItem $MainDir\$dirName -Recurse | Where-Object { $_.PSIsContainer -and $_.Name -cmatch $NameToFind}
#Write-Output "Counting subfolders in subfolders"
$fileCount = ($subDirs | Measure-Object).Count
$countResult = "Folder:`"$dir`"; Total: $fileCount"
$folderCountList.Add($countResult)
Write-Output $countResult
$fileListResult.Add("`nFolder Owner: $dir")
foreach ($file in $subDirs) {
$fileListResult.Add("Name: $file")
}
}
$fileRecordPath = "$PSScriptRoot\$fileRecord`_$today.txt"
$folderCountList | Out-File -FilePath "$fileRecordPath"
$fileListResult | Out-File -FilePath "$fileRecordPath" -Append
Write-Output "Saved results to $fileRecord"
Write-Output "End Script"
read-host “Press ENTER to exit...”
}
MainScript