Powershell получает список вложенных папок и количество файлов в каждой в табличном формате

#list #powershell #file #count

#Список #powershell #файл #количество

Вопрос:

Я хотел бы создать таблицу, содержащую количество файлов во всех вложенных папках с именем «andre tegninger». Я нашел здесь следующий код, который я изменил для фильтрации по интересующей меня подпапке.

 dir -filter "*Andre tegninger*" -recurse |  ?{ $_.PSIsContainer } | %{ Write-Host $_.FullName (dir $_.FullName | Measure-Object).Count }
 

Это работает нормально, но есть ли способ получить имя папки и количество файлов в двух отдельных столбцах?
Спасибо!

Комментарии:

1. вы можете выбрать столбцы

Ответ №1:

Вы можете использовать Select-Object для получения в отдельных полях ожидаемых свойств :

 dir -filter "*Andre tegninger*" -recurse | ?{ $_.PSIsContainer } | Select-Object -Property FullName, {(dir $_.FullName | Measure-Object).Count}
 

Поскольку -Property ожидает свойство (очевидно) Вы должны использовать {} around (dir $_.FullName | Measure-Object).Count , чтобы сообщить powershell, что это вычисляемое выражение.

В качестве выходных данных вы получаете :

 FullName      (dir $_.FullName | Measure-Object).Count
--------      --------------------------------------
Your list of folders...
 

Вы можете пометить имена полей, чтобы присвоить им несколько причудливых имен, таких как :

 dir -filter "*Andre tegninger*" -recurse | ?{ $_.PSIsContainer } | Select-Object -Property @{label="Path";expression={$_.FullName}}, @{label="Numer of files";expression={(dir $_.FullName | Measure-Object).Count}}
 

И вы получаете в качестве вывода :

 Path     Numer of files
----     --------------