Skip to content

Latest commit

 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Folder Merger

«Программное обеспечение предоставляется "как есть" (AS IS), без каких-либо гарантий».

Лёгкая Windows-программа с тёмной темой, которая рекурсивно собирает все файлы из выбранной папки в один текстовый файл. Написана на Python и tkinter — никаких внешних зависимостей. Поддерживает возможность выбора исключений, как локальных для выбранной папки, так и глобальных которые действуют в любом выбранном проекте.

python license platform

Возможности

  • Рекурсивный обход — проходится по всем вложенным папкам, собирает файлы, сортирует по алфавиту и пишет в один выходной файл
  • Имя дампа от папки — выходной файл автоматически называется по имени выбранной папки (например, fox_2026-08-06_....txt), имя пересчитывается при смене папки
  • Копирование в буфер обмена — галочка «Копировать в буфер обмена»: после объединения финальный текст автоматически копируется в буфер обмена
  • Исключения — можно исключить файлы или папки по имени, с указанием области (везде, только корень, или в конкретной подпапке); общие исключения действуют для всех папок
  • Тёмная тема — современный тёмный интерфейс
  • Один экземпляр — запускается только одна копия программы, повторный запуск игнорируется
  • Логирование сессий — хранит историю последних 10 запусков в папке logs/
  • История папок — запоминает до 20 недавно использованных папок

Требования

  • Windows 7+
  • Python 3.11+ (tkinter входит в комплект, ничего дополнительно ставить не надо)

Установка

  1. Перейдите на страницу релизов и скачайте последнюю версию, например v1.2.zip
  2. Распакуйте архив в удобное место
  3. Запустите run.bat — откроется окно программы

Запуск

python main.py

Или просто дважды кликнуть run.bat — откроется без консоли.

Как пользоваться

  1. Выберите исходную папку (или выберите из истории)
  2. Укажите путь к выходному файлу (по умолчанию подставляется имя папки с датой)
  3. При желании настройте исключения через кнопку «Настроить исключения» и включите галочку «Копировать в буфер обмена», если нужно автоматическое копирование результата
  4. Нажмите «Объединить»

В результате получите файл, где содержимое каждого файла из исходной папки идёт по порядку, а перед каждым файлом указан его относительный путь.

Формат вывода

================================================================================
Файл: relative/path/file.txt
================================================================================

[содержимое файла]

===============================================================================
Файл: relative/path/next_file.txt
===============================================================================

[содержимое файла]

Настройки

При первом запуске настройки создаются автоматически. Можете скопировать config/settings.example.json как образец.

Параметр Описание
last_folder Последняя использованная исходная папка
folder_history История папок (макс. 20)
copy_to_clipboard Копировать ли финальный текст в буфер обмена после объединения (true/false)

Исключения хранятся отдельно:

  • config/global_exceptions.json — общие исключения для всех папок (по умолчанию: logs, dumps, __pycache__, .git, node_modules, *.tmp, *.log, Thumbs.db, .DS_Store, .gitignore, *.md)
  • config/local_exceptions.json — исключения для конкретных папок (в гитигноре, содержит локальные пути)

Структура проекта

folder-merger/
├── main.py                       # Точка входа
├── requirements.txt              # Зависимости (нет)
├── run.bat                       # Запуск без консоли
├── LICENSE
├── README.md
├── .gitignore
├── config/
│   ├── settings.example.json     # Пример настроек
│   ├── global_exceptions.json    # Общие исключения (по умолчанию)
│   ├── settings.json             # Твои настройки (в гитигноре)
│   └── local_exceptions.json     # Локальные исключения (в гитигноре)
├── app/
│   ├── __init__.py
│   ├── main_window.py            # Графический интерфейс
│   ├── merger.py                 # Логика объединения
│   ├── merge_worker.py           # Фоновый поток и статусы
│   ├── settings_manager.py       # Сохранение/загрузка настроек
│   ├── exceptions_engine.py      # Фильтрация файлов и папок
│   ├── exceptions_window.py      # Окно настроек исключений
│   ├── global_exceptions_window.py  # Окно общих исключений
│   ├── exception_store.py        # Хранение исключений
│   ├── instance_manager.py       # Контроль единственного экземпляра
│   ├── logger.py                 # Логирование сессий
│   └── theme.py                  # Цвета тёмной темы
└── logs/                         # Логи сессий (в гитигноре)

Лицензия

MIT

About

Лёгкая Windows-программа с тёмной темой, которая рекурсивно собирает все файлы из выбранной папки в один текстовый файл. Написана на Python и tkinter — никаких внешних зависимостей. Поддерживает выбор исключений, локальных для выбранной папки, так и общие которые действуют в любом выбранном проекте.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages