Гид по технологиям

Как узнать размер папки в Windows с помощью PowerShell

5 min read Советы по Windows Обновлено 25 Dec 2025
Размер папки в Windows через PowerShell
Размер папки в Windows через PowerShell

Папки ярких цветов на столе

Если нужно выяснить, какие папки занимают диск, проверьте размер папки. Это полезно перед переносом большого каталога на USB-накопитель или в облако. В Проводнике Windows размер вычисляется через Свойства папки, но это медленно для больших директорий и неудобно для массового управления на многих компьютерах. PowerShell позволяет посчитать объём быстро и автоматизировать процесс.

Ключевые команды и смысл

Окно PowerShell с командами для просмотра размера папки в байтах

Коротко:

  • Get-ChildItem (alias gci или cgi) — перечисляет элементы каталога. Опция -File ограничивает вывод файлами, -Directory — папками.
  • Measure-Object (alias measure) — суммирует свойства объектов. В нашем случае мы суммируем Length (длину/размер в байтах).
  • Параметр -Recurse — рекурсивный обход поддиректорий.
  • -Force — включает скрытые и системные файлы.

Определение терминов (в одну строку):

  • Length — размер файла в байтах.
  • .Sum — свойство результата Measure-Object, содержащее итоговую сумму.

Важно: PowerShell возвращает размер в байтах. Для удобного чтения делите на 1Kb, 1Mb, 1Gb (PowerShell понимает эти суффиксы).

Как вычислить размер папки (шаги)

Следуйте этим шагам для базовой проверки размера:

  1. Нажмите клавишу Win и введите powershell.
  2. Правой кнопкой мыши выберите Windows PowerShell и Запустить от имени администратора. Подтвердите UAC.
  3. В окне PowerShell введите команду (пример приведён ниже) и нажмите Enter.

Оригинальная команда из примера (сохраняется без изменений):

        ` Get-ChildItem FolderPath | Measure-Object -Property Length -sum`
    

В этой команде замените FolderPath на путь к вашей папке, например E:\Download. Пример из источника (сохранён):

        `Get-ChildItem E:\Download | Measure-Object -Property Length -sum`
    

Вывод покажет количество элементов и суммарный размер в байтах. Чтобы перевести в КБ/МБ/ГБ, делите на 1024 последовательно или используйте встроенные сокращения PowerShell (1Mb, 1Gb).

Альтернативное получение суммы через .sum (оригинал сохранён):

        `(gci E:\Download | measure Length -s).sum / 1Mb`
    

И для гигабайт:

        `(gci E:\Download | measure Length -s).sum / 1Gb`
    

Примечание: в примерах используется alias gci — это укороченная форма Get-ChildItem.

Локализация форматов дат и даты в фильтрах

Когда вы фильтруете файлы по CreationTime или LastWriteTime, PowerShell сравнивает объекты DateTime. Лучше задавать даты в ISO-формате или в том формате, который точно понимает ваша система. В русской локали удобнее использовать ‘yyyy-MM-dd’ или приводить строку к [datetime]:

Пример корректного фильтра по дате (локализованная версия):

(gci -Force E:\Download -Recurse -ErrorAction SilentlyContinue | ? { $_.CreationTime -gt [datetime]'2023-06-01' -and $_.CreationTime -lt [datetime]'2023-07-01' } | measure Length -s).sum / 1Gb

Важно: не все системы одинаково парсят формат mm/dd/yy; рекомендую использовать ‘yyyy-MM-dd’ или явное приведение к [datetime].

Как получить размер подпапок рекурсивно

Окно PowerShell с командой для просмотра размера подпапок

Чтобы посчитать суммарный размер папки и всех вложенных файлов, используйте -Recurse и -Force. Пример (сохранён):

        `((gci -force c:\Users -Recurse -ErrorAction SilentlyContinue| measure Length -s).sum / 1Gb) `
    

Этот пример показывает суммарный размер в гигабайтах. Параметр -ErrorAction SilentlyContinue подавляет сообщения об ошибках (например, о доступе к защищённым файлам).

Полезный приём: если хотите исключить определённые типы файлов или папки, фильтруйте объекты через Where-Object (?), указывая критерии по Extension, LastWriteTime и т.д.

Как вывести размеры подпапок в табличном виде (GridView)

Windows PowerShell ISE — просмотр размеров папок в таблице

Если нужно видеть отдельные подпапки и их размеры, удобнее получить коллекцию объектов и открыть её в Out-GridView. Оригинальный скрипт для PowerShell ISE (сохранён):

        ` $targetfolder = 'C:\'  
$dataColl = Get-ChildItem -Force $targetfolder -Directory -ErrorAction SilentlyContinue | ForEach-Object {  
   $len = Get-ChildItem -Recurse -Force $_.FullName -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum | Select-Object -ExpandProperty Sum  
   $foldername = $_.FullName  
   $foldersize = '{0:N2} GB' -f ($len / 1Gb)  
   [PSCustomObject]@{  
       foldername = $foldername  
       foldersizeGb = $foldersize  
   }  
}  
$dataColl | Out-GridView -Title "Size of Subdirectories in $targetfolder"
    

Запустите в PowerShell ISE (или обычном PowerShell с GUI) — появится окно с таблицей, удобной для сортировки и фильтрации.

Совет: при больших каталогах выполнение займёт время; для ускорения можно параллелить операции с помощью ForEach-Object -Parallel (PowerShell 7+) или собирать статистику по отдельным веткам.

Поиск размера файлов по типу

Чтобы узнать, сколько места занимают файлы определённого расширения, используйте wildcard. Оригинальный пример (сохранён):

        `(gci E:\download *.jpg | measure Length -s).sum / 1Mb `
    

Локализованный пример с учётом поддиректорий:

(Get-ChildItem E:\download -Recurse -Include *.jpg -File -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum / 1Mb

Это быстро показывает, занимают ли изображения основную долю места. Аналогично можно проверять видеоконтент .mp4, архивы .zip и т.д.

Примеры альтернативных подходов

  • GUI-инструменты (SpaceSniffer, WinDirStat, TreeSize) дают визуальный анализ и удобны непрофессионалам.
  • Сценарии PowerShell удобны для автоматизации, отчётности и удалённого запуска через WinRM или PowerShell Remoting.
  • На серверах (особенно с большим количеством мелких файлов) стоит комбинировать — быструю агрегацию через PowerShell и глубокий анализ через специализированные утилиты.

Когда способ PowerShell даёт неверный или неполный результат

  • Если у вас нет прав на чтение файлов или папок — Measure-Object пропустит эти элементы или выдаст ошибки; используйте учётные записи с нужными правами.
  • Символьные ссылки и точки монтирования могут дублировать подсчёт — учитывайте junction и reparse points.
  • Файлы, занятые системой (блокировки), могут быть недоступны для чтения; команда вернёт меньше, чем реально используется на диске из-за выделенных, но не освобождённых областей.

Важно: различайте «логику подсчёта размеров файлов» и «заполненность диска» — проблема с аллокацией и метаданными (например, различие между фактическим размером и выделенными кластерами) потребует других инструментов.

Чек-листы по ролям

Администратор:

  • Проверить права на целевые папки.
  • Использовать -ErrorAction SilentlyContinue и вести лог ошибок.
  • Автоматизировать сбор в расписании (Task Scheduler) и сохранять CSV/HTML отчёты.
  • Обрабатывать junction/монтирования, чтобы избежать двойного подсчёта.

Обычный пользователь:

  • Использовать простую команду gci | measure для папок на локальном диске.
  • При слабой уверенности — применять GUI-инструмент.
  • Делать резервную копию перед массовым удалением.

Шпаргалка команд (cheat sheet)

ЗадачаКоманда (пример)Комментарий
Суммарный размер папки (байты)`Get-ChildItem E:\DownloadMeasure-Object -Property Length -Sum`Базовый подсчёт, не рекурсивный
Размер в MB`(gci E:\Downloadmeasure Length -s).sum / 1Mb`Использует alias gci и measure
Рекурсивный размер в GB`((gci -force c:\Users -Recurse -ErrorAction SilentlyContinuemeasure Length -s).sum / 1Gb)`Включает скрытые файлы
Размер по расширению (рекурсивно)`(Get-ChildItem E:\download -Recurse -Include *.jpg -FileMeasure-Object Length -Sum).Sum / 1Mb`Поддерживает вложенные папки

| Таблица размеров подпапок | (скрипт с Out-GridView выше) | Для визуального анализа |

Пример методологии — как системно освободить место (мини-план)

  1. Быстрая диагностика: собрать суммарные размеры корневых папок (C:\, D:\ и т.д.).
  2. Узкая фильтрация: для крупных директорий определить по расширениям, какие типы занимают больше всего (например, .mp4, .iso).
  3. Проверка сроков: отбросить старые временные файлы и бэкапы по дате.
  4. Политика действий: удалить ненужные, переместить архивы на NAS/облако, сжать данные.
  5. Автоматизация: настроить периодические скрипты и оповещения при превышении порога.

Модель принятия решений (короткий сценарий)

Mermaid-диаграмма ниже помогает выбрать инструмент:

flowchart TD
  A[Нужно узнать, что занимает диск?] --> B{Нужно ли автоматизировать?}
  B -- Да --> C[Использовать PowerShell, планировщик, логирование]
  B -- Нет --> D{Нужно ли визуальное представление?}
  D -- Да --> E[WinDirStat/TreeSize]
  D -- Нет --> F[Использовать Проводник или простую команду gci|measure]
  C --> G[Собрать отчёты и автоматизировать]
  E --> G
  F --> G

Безопасность и риски

  • Запускать команды с правами администратора только при необходимости.
  • При массовом удалении используйте флаг -WhatIf или сначала сохраняйте список файлов в CSV.
  • Отслеживайте junction и hardlink, чтобы не удалить нужные данные.

Советы по производительности

  • Для очень больших каталогов измерения могут занимать минуты; отсеивайте по расширениям и параллелите запросы, если используете PowerShell 7+.
  • Избегайте одновременной проверки всего диска из нескольких задач — это будет создавать высокую нагрузку I/O.

Короткая сводка

PowerShell даёт гибкие инструменты для измерения размера папок и автоматизации задач по очистке диска. Для единичных случаев удобнее GUI, для регулярного контроля и действий на многих машинах — скрипты PowerShell.

Важное: перед массовым удалением делайте резервные копии и проверяйте права доступа.

Краткие рекомендации для публикации отчёта (SOP)

  1. Запустить скрипт-диагностику на целевых машинах.
  2. Сохранить результаты в CSV и отправить на централизованный сервер.
  3. Отфильтровать каталоги по порогу (например, >5Gb) и подготовить план освобождения места.
  4. Выполнить перемещение/архивацию и повторно снять отчёт для верификации.

PowerShell ISE в меню Пуск


Краткое резюме:

  • Используйте Get-ChildItem + Measure-Object для подсчёта размеров.
  • Добавляйте -Recurse и -Force для рекурсивных и скрытых объектов.
  • Для визуализации применяйте Out-GridView или GUI-инструменты.
  • Автоматизируйте сбор и верификацию для регулярного мониторинга.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Изменение метаданных файла в Windows
Windows

Изменение метаданных файла в Windows

Как выбрать Ethernet‑кабель: Cat‑5e, Cat‑6, Cat‑6a и другие
Сеть

Как выбрать Ethernet‑кабель: Cat‑5e, Cat‑6, Cat‑6a и другие

Исправить No Audio Output Device is installed — руководство
Windows

Исправить No Audio Output Device is installed — руководство

Настройка Bash-приглашения: практический гайд
Linux

Настройка Bash-приглашения: практический гайд

QR‑код в Google Chrome на Android
Android.

QR‑код в Google Chrome на Android

Как искать сразу по всем стримингам на Roku
Стриминг

Как искать сразу по всем стримингам на Roku