Скрипт Powershell для подсчета .txt файлов только в каталоге - PullRequest
0 голосов
/ 28 февраля 2019

Моя цель - отправить электронное письмо некоторым пользователям, чтобы уведомить о текущем количестве файлов в некоторых каталогах папок.

Мне нужно считать файлы только с расширениями .txt и исключатьпапки и файлы внутри него.

см. рисунок ниже

U: \ TESTING \ Main Folder

Testing Main Folder Image

U: \ TESTING \ Основная папка \ Подкаталог 1

Testing Sub Folder 1 Image

U: \ТЕСТИРОВАНИЕ \ Основная папка \ Подкаталог 2

Testing Sub Folder 2 Image

результат вывода должен выглядеть примерно так

Example output table

Строка главной папки должна быть только 1, но она также включает в себя подпапки 1 и 2 и файлы txt внутри них.

Вот часть кода, которая подсчитывает общее количество файлов

$total = Get-ChildItem $path -Recurse -File -Include *.txt |Where-Object {$_.LastWriteTime} | Measure-Object | ForEach-Object{$_.Count}

Когда я удаляю -Recurse в этой строке, результатом становится 0 для всегостолбец

 $total = Get-ChildItem $path  -File -Include *.txt |Where-Object {$_.LastWriteTime} | Measure-Object | ForEach-Object{$_.Count}

1 Ответ

0 голосов
/ 28 февраля 2019

Я нашел следующий обходной путь

  1. , используя -filter вместо -include

, просто удалите -recurse, чтобы исключить файлы подкаталогов при подсчете, и используйте вместо него -filter-включить

$path = "D:\LIVE"

 $total = Get-ChildItem $path  -File -filter *.txt |Where-Object {$_.LastWriteTime} | Measure-Object | ForEach-Object{$_.Count}
использование get-Item вместо Get-ChildItem с -include

-Filter ограничен использованием одного параметра, поэтому, если вы хотите использовать -include, используйте столько параметров поиска, сколько сможете, используйте Get-Item вместо get-childItem

просто добавьте * (когда путь не объявлен) или * добавьте к существующему пути

$path = "D:\LIVE\*"

 $total = Get-Item $path -include *.txt, *.xml  |Where-Object {$_.LastWriteTime} | Measure-Object | ForEach-Object{$_.Count}
...