Параметры суммы, полученные из Powershell - PullRequest
0 голосов
/ 07 декабря 2018

Я создаю скрипт, который построчно суммирует размеры каждого файла в каталоге красной линией файла.

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

То, что у меня сейчас есть:

#Read each line of a file for a directory
foreach($line in Get-Content .\file.txt) {
  #Prints the current line path
  echo $line
  #Prints a count of the files under that path and a sum of all files length
  Get-ChildItem -Recurse $line | Measure-Object -Property Length -Sum
}

Вывод этих сценариев выглядит следующим образом:

T:/folder_1/folder_2/2018/12/6/A
Count    : 30
Average  :
Sum      : 522382636
Maximum  :
Minimum  :
Property : Length

T:/folder_1/folder_2/2018/12/6/B
Count    : 2
Average  :
Sum      : 2835134
Maximum  :
Minimum  :
Property : Length

Как получить сумму каждой суммы вывода для каждой папки, т. Е. Сумму всех значений .Sum свойств?

1 Ответ

0 голосов
/ 07 декабря 2018

Объединение предложений notjustme и Ansgar Wiechers :

Get-Content .\file.txt | ForEach-Object -ov results {
  # Calculate the total size for the path at hand, and
  # output the result as a custom object.
  [pscustomobject] @ {
    Path = $_
    Length = (Get-ChildItem -Recurse $_ | Measure-Object -Property Length -Sum).Sum
  }
} | Measure-Object -Property Length -Sum | Select-Object -ExpandProperty Sum

# Use $results to access the per-path values.

Обратите внимание, как внешний Measure-Object используется для суммирования результатовpath Measure-Object results.


Если вам не нужно сохранять результаты для каждого пути и просто нужна общая сумма , решение становится намного проще, как отмечает Ансгар:

(Get-ChildItem -LiteralPath (Get-Content .\file.txt) -Recurse |
   Measure-Object -Property Length -Sum).Sum

Обратите внимание, как массив строк, выводимых Get-Content, напрямую передается в -LiteralPath, что поддерживается, поскольку и -Path, и -LiteralPath определены как [string[]] (строка массивы ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...