PowerShell: Получение размера папки в Windows

Вы можете использовать PowerShell для вычисления точного размера определенной папки в Windows (рекурсивно, включая все подпапки). Таким образом, вы можете быстро узнать размер каталога на диске без использования сторонних инструментов, таких как TreeSize или WinDirStat. Кроме того, PowerShell позволяет более гибко фильтровать или исключать файлы (по типу, размеру или дате), которые необходимо учитывать при расчете размера папки.

Для расчета размера папки используйте следующие команды PowerShell:

  • Get-ChildItem (gci псевдоним) — получение списка файлов (с указанием размеров) в каталоге (включая вложенные подкаталоги). Ранее мы показывали, как использовать команду Get-ChildItem для поиска самых больших файлов на диске.
  • Measure-Object (measure alias) — суммирует размеры всех файлов для получения общего размера каталога.

Например, чтобы узнать размер каталога D:\ISO каталог в GB, запустите:

(Get-ChildItem D:\ISO -force -Recurse -ErrorAction SilentlyContinue| measure Length -sum).sum / 1Gb

Используемые параметры:

  • -Force — включать скрытые и системные файлы
  • -Recure — получить список файлов во вложенных папках
  • -ErrorAction SilentlyContinue — игнорировать файлы и папки, к которым текущий пользователь не имеет доступа
  • -measure Length -sum — сумма размеров всех файлов (свойство Length)
  • .sum/ 1Gb — показать общий размер в ГБ

В этом примере размер каталога составляет около 37 ГБ (эта команда PowerShell игнорирует сжатие файловой системы NTFS, если оно включено).

Чтобы округлить результаты до двух знаков после запятой, используйте команду:

"{0:N2} GB" -f ((Get-ChildItem D:\ISO -force -Recurse -ErrorAction SilentlyContinue| measure Length -sum).sum / 1Gb)

PowerShell: получить размер папки в Гб

PowerShell может найти общий размер всех файлов определенного типа в каталоге. Например, добавьте команду *.iso параметр, чтобы узнать, сколько места занимают файлы ISO:

"{0:N2} GB" -f ((Get-ChildItem D:\ISO *.iso -force -Recurse -ErrorAction SilentlyContinue| measure Length -sum).sum / 1Gb)

вычислить размер файла в папке с помощью powershell oneliner

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

(gci -force D:\ISO –Recurse -ErrorAction SilentlyContinue | ? {$_.CreationTime -gt '1/1/24’ -AND $_.CreationTime -lt '12/31/24'}| measure Length -sum).sum / 1Gb

Если в каталоге есть символические или жесткие ссылки, приведенная выше команда PowerShell отобразит неверный размер папки. Например. C:\Windows содержит множество жестких ссылок на файлы в папке WinSxS (Windows Component Store). Такие файлы могут быть учтены несколько раз. Чтобы игнорировать жесткие ссылки, используйте следующую команду:

"{0:N2} GB" -f ((gci –force C:\Windows –Recurse -ErrorAction SilentlyContinue | Where-Object { $_.LinkType -notmatch "HardLink" }| measure Length -s).sum / 1Gb)

Получите размеры всех подпапок верхнего уровня в целевой папке и количество файлов в каждой подпапке (в этом примере сценарий PowerShell отображает размер всех профилей пользователей в C:\Users):

$targetfolder="C:\Users"
$dataColl = @()
gci -force $targetfolder -ErrorAction SilentlyContinue | ? { $_ -is [io.directoryinfo] } | % {
    $len = 0
    gci -recurse -force $_.fullname -ErrorAction SilentlyContinue | % { $len += $_.length }
    $filesCount = (gci -recurse -force $_.fullname -File -ErrorAction SilentlyContinue | Measure-Object).Count
  $dataObject = New-Object PSObject -Property @{
        Folder = $_.fullname
        SizeGb = ('{0:N3}' -f ($len / 1Gb)) -as [single]
        filesCount=$filesCount
    }
   $dataColl += $dataObject
   }
$dataColl | Out-GridView -Title "Subfolder sizes and number of files"

получение размеров подпапок и количества файлов с помощью PowerShell

% это псевдоним для foreach-object цикла.

Сценарий отобразит графическую таблицу Out-GridView, в которой будут перечислены папки, их размеры и количество содержащихся в них файлов. Папки в таблице можно отсортировать по размеру или количеству файлов в форме Out-GridView. Результаты можно также экспортировать в файл CSV (| Export-Csv folder_size.csv) или в файл Excel.

Эти команды работают во всех версиях PowerShell, включая более поздние версии PowerShell Core 7.x.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *