adicionando o tamanho do arquivo de dois ou mais arquivos no powershell

1

Por que o snippet a seguir adiciona apenas o tamanho do byte do último arquivo a 0 e não o tamanho de todos os arquivos correspondentes?

$sizeOfVhds = 0
(Get-Item "\blahhh.com\foo\bar\*.vhd") |
ForEach-Object {
    $sizeOfVhds = $sizeOfVhds + $_.length
}

Estou tentando somar o tamanho de dois ou mais arquivos vhd em um determinado diretório. Eu estou não tentando calcular o tamanho legível humano.

    
por koma5 23.09.2013 / 11:10

1 resposta

0

Há uma maneira mais fácil de fazer isso usando o cmdlet measure-object . Veja um exemplo em que você pode supor que $Files contém uma coleção de objetos FileInfo .

PS C:\> $Files | measure-object -Property length -sum


Count    : 61
Average  :
Sum      : 167476924
Maximum  :
Minimum  :
Property : Length

Veja um exemplo usando a entrada que você forneceu que extrai a soma em uma única instrução:

PS C:\> $sum = ((Get-ChildItem "\blahhh.com\foo\bar\*.vhd") | 
        Measure-Object -Property length -sum) | 
        Select-Object -ExpandProperty Sum
PS C:\> $sum
Sum of the value of 'length' for each object in collection outputted here
    
por 23.09.2013 / 14:55

Tags