В этой статье вы узнаете, как быстро сравнить две папки или директории и найти уникальные файлы в одной из них.
Поводом для написания статьи стал случай который случился на этой неделе у меня на работе. После обновления программы «СМЕТА.ру» у нас пропали формы вывода актов КС-2. Как выяснилось позже, проблема возникла из-за того, что в процессе обновления в директории ExcelShabl был перезаписан файл MainList.xls, который отвечает за список шаблонов актов.
В результате нужный шаблон просто «исчез» из программы. Основная сложность заключалась в том, что никто не знал точного имени этого шаблона, а вручную перебирать сотню файлов в директории никто не хотел.

Решение оказалось довольно простым и быстрым. Я взял стандартную папку ExcelShabl, которую нам прислали из технической поддержки Смета.ру, и сравнили её с нашей старой папкой, которую заранее сохранили и переименовали в ExcelShabl1.
С помощью небольшого скрипта на PowerShell удалось за считанные минуты найти все уникальные файлы, которые присутствовали только в старой версии папки. Среди них и оказался нужный нам шаблон.
После этого мы просто прописали его обратно в файл MainList.xls, и работа в «СМЕТА.ру» была полностью восстановлена.
📌 Что именно мы ищем
В нашем случае задача звучит так:
👉 Как найти уникальные файлы в папке1, которых нет в папке2.
Проще говоря — сравнить списки файлов в папках и вывести разницу.
🚀1 Способ – Самый быстрый способ — через PowerShell
Этот способ не требует установки программ и работает на Windows 10 и 11
🔧 Шаг 1. Открываем PowerShell
- Перейдите в папку, где лежат ExcelShabl и ExcelShabl1
- В адресной строке набираем PowerShell и выбираем его из выпадающего списка
🔧 Шаг 2. Вставляем команду
копируем весь код ниже и вставляем его в PowerShell (сразу и весь , а не построчно!!!)
$folder1 = "C:\путь\ExcelShabl"
$folder2 = "C:\путь\ExcelShabl1"$files1 = Get-ChildItem $folder1 -File | Select-Object -ExpandProperty Name
$files2 = Get-ChildItem $folder2 -File | Select-Object -ExpandProperty Name$unique = $files2 | Where-Object { $_ -notin $files1 }$unique
📊 Что делает этот скрипт
- Получает список файлов из ExcelShabl
- Получает список файлов из ExcelShabl1
- Сравнивает их
- Выводит только те файлы, которых нет в первой папке
💾 Как сохранить результат в файл
Если список нужно передать или сохранить:
$unique | Out-File "C:\путь\unique_files.txt"
👉 В итоге получите текстовый файл со всеми уникальными именами
📁 Если в папках есть вложенные каталоги
По умолчанию сравниваются только файлы в корне. Если у вас есть подпапки — используйте этот вариант:
$files1 = Get-ChildItem $folder1 -Recurse -File | Select-Object -ExpandProperty Name
$files2 = Get-ChildItem $folder2 -Recurse -File | Select-Object -ExpandProperty Name$files2 | Where-Object { $_ -notin $files1 }
⚠️ Важные нюансы
Перед использованием стоит учитывать:
1. Сравнение идет по имени файла
Если в обеих папках есть файл с одинаковым именем, он будет считаться одинаковым, даже если содержимое разное.
2. Если нужно сравнение по содержимому
Можно сделать более точную проверку — по хэшам файлов (например, SHA256). Это пригодится, если файлы могут отличаться, но называться одинаково.
3. Регистр символов
Windows не чувствителен к регистру, поэтому:
file.xlsxиFILE.xlsxсчитаются одинаковыми
🔥 Полезное улучшение: сразу скопировать уникальные файлы
Если нужно не просто посмотреть список, а собрать файлы в отдельную папку:
$destination = "C:\путь\unique"foreach ($file in $unique) {
Copy-Item "$folder2\$file" -Destination $destination
}
👉 В результате все уникальные файлы окажутся в одной папке
✅ Итог
Сравнение папок — задача, которая решается буквально за пару минут:
- Без стороннего софта
- Без сложных настроек
- С возможностью автоматизации
Используя PowerShell, вы можете:
✔ быстро находить различия
✔ сохранять результаты
✔ автоматизировать обработку файлов









