Подсчёт размера каталога и файла Powershell

Привет.

Узнать размер файла с помощью POSH очень просто

$l = Get-Item [путь к файлу]

$l.Length

А вот с размером каталога сложней.

У объекта каталог нет свойства  Length

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

$l = Get-ChildItem путь к каталогу -recurse -Force | Measure-Object -Property Length -Sum

$l.sum

а так  $l.sum /1mb POSH покажет размер в мегабайтах

Так же можно отформатировать вывод, к примеру выводить после запятой 2 знака

$FolderSize = (Get-ChildItem X:\temp -recurse -Force | Measure-Object -Property Length -Sum).Sum / 1Mb

[math]::round($FolderSize,2)

По мотивам: Smearg

Об авторе Alex

Работаю Администратором. В основном Windows. Специализируюсь на Hyper-V, поддержке продуктивных сред и во всём помогает POSH. Малость Sharepoint. Чуть чуть работаю с железом
Запись опубликована в рубрике Powershell, Администрирование с метками . Добавьте в закладки постоянную ссылку.

4 Responses to Подсчёт размера каталога и файла Powershell

  1. Евгений говорит:

    Подскажите а как можно вывести сумарный размер файлов для каждого расширения в определенной папке?

  2. Alex говорит:

    Как то так, покажет размер всех txt файлов в каталоге:

    Get-ChildItem "D:\test\" -recurse -Force | Where-Object {$_.Extension -eq ".txt"} | Measure-Object -Property Length -Sum

    Или сразу размер на примере VHD

    (Get-ChildItem "D:\hyper-V\Users\Hyper-V" -recurse -Force | Where-Object {$_.Extension -eq ".vhdx"} | Measure-Object -Property Length -Sum).sum /1mb

  3. Андрей говорит:

    Подскажите а как можно сгруппировать файлы по расширениям и для каждой группы вывести суммарный размер всех файлов в ней?

  4. White говорит:

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

    ###############################################################
    #
    # Суммарный объём файлов с одним расширением в указанном каталоге
    #
    #
    # 20.11.2012 ada(СОБАКА)alexwhite.ru Alexandr
    # Пример
    # .\FilesSumSize.ps1 -Folder c:\tmp -ExtList "exe;txt;pdf"
    #
    #
    #
    ################################################################

    param ($Folder, $ExtList)

    #############################
    #
    # Суммирование размера файлов
    #
    #############################

    Function Sum ($Path, $FileExt)
    {
    $FileExt = "." + $FileExt

    $Sum = (Get-ChildItem $Path -recurse -Force | where {$_.extension -eq $FileExt} | Measure-Object -Property Length -Sum).Sum / 1Mb
    $Count = (Get-ChildItem $Path -recurse -Force | where {$_.extension -eq $FileExt} | Measure-Object -Property Length -Sum).Count
    Write-host "Файлов $FileExt $Count шт. Размер= $Sum"

    #Можно вернуть саммарный размер
    #Return $Sum

    }

    ################# Скрипт ######################
    CLS

    Write-host "========= Суммарный объём файлов в каталоге $Folder : ========="

    # Получение кло-во разрешений и их значения
    $Arrayext = $ExtList -split ";"

    Foreach ($Ext in $Arrayext)
    {

    #Вызов функции суммирования файлов
    sum $Folder $Ext
    }

    Вывод:

    ========= Суммарный объём файлов в каталоге c:\tmp : =========
    Файлов .exe 2 шт. Размер= 16.0344390869141
    Файлов .txt 3 шт. Размер= 0.000396728515625
    Файлов .pdf шт. Размер= 0

Добавить комментарий