Как сравнить директории и найти уникальные файлы: мое практическое руководство на примере PowerShell

В этой статье вы узнаете, как быстро сравнить две папки или директории и найти уникальные файлы в одной из них.

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

В результате нужный шаблон просто «исчез» из программы. Основная сложность заключалась в том, что никто не знал точного имени этого шаблона, а вручную перебирать сотню файлов в директории никто не хотел.

Как сравнить директории и найти уникальные файлы: мое практическое руководство на примере PowerShell

Решение оказалось довольно простым и быстрым. Я взял стандартную папку ExcelShabl, которую нам прислали из технической поддержки Смета.ру, и сравнили её с нашей старой папкой, которую заранее сохранили и переименовали в ExcelShabl1.

С помощью небольшого скрипта на PowerShell удалось за считанные минуты найти все уникальные файлы, которые присутствовали только в старой версии папки. Среди них и оказался нужный нам шаблон.

После этого мы просто прописали его обратно в файл MainList.xls, и работа в «СМЕТА.ру» была полностью восстановлена.


📌 Что именно мы ищем

В нашем случае задача звучит так:

👉 Как найти уникальные файлы в папке1, которых нет в папке2.

Проще говоря — сравнить списки файлов в папках и вывести разницу.


🚀1 Способ – Самый быстрый способ — через PowerShell

Этот способ не требует установки программ и работает на Windows 10 и 11

🔧 Шаг 1. Открываем PowerShell

  1. Перейдите в папку, где лежат ExcelShabl и ExcelShabl1
  2. В адресной строке набираем 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, вы можете:
✔ быстро находить различия
✔ сохранять результаты
✔ автоматизировать обработку файлов

Виталий nibbl

Привет 👋 Меня зовут Виталий, в сети я известен как Виталий Nibbl. С 2009 года я в IT и люблю задачки, от которых у других опускаются руки. Если вам сказали, что - "это невозможно" — значит, вы просто ещё не обратились ко мне 😎 В моих блогах на YouTube и Telegram вы найдёте пошаговые инструкции и решения любых сложностей. А ещё я профессионально скачиваю видео с любых платформ и всегда на связи по IT-вопросам.

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

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.