Skip to content

Mily260/folder-compare-tool

Repository files navigation

📁 Folder Compare Tool

Profesjonalne narzędzie do porównywania folderów dla Windows

Zaawansowany program w Pythonie do analizy i porównywania zawartości folderów z wieloma funkcjami ułatwiającymi pracę z dużymi zbiorami plików.

Python Version License Platform

Spis treści

✨ Funkcje

🔍 Podstawowe

  • Dokładne porównanie plików - znajdowanie różnic w nazwach, rozmiarach i datach modyfikacji
  • Rekurencyjne przeszukiwanie - analiza całej struktury folderów i podfolderów
  • Grupowanie według rozszerzeń - przejrzysta organizacja wyników według typów plików

🔐 Zaawansowane

  • Weryfikacja sum kontrolnych - SHA-256 lub MD5 dla sprawdzania integralności plików
  • Wielowątkowość - równoległe obliczanie hashów dla maksymalnej wydajności
  • Wznowienie przerwanych operacji - kontynuacja skanowania po przerwaniu

📊 Raporty i statystyki

  • Eksport do TXT i CSV - raporty w formatach łatwych do analizy
  • Podsumowanie wykonawcze - kluczowe informacje na początku raportu
  • Statystyki typów plików - analiza rozszerzeń i rozmiarów
  • Całkowite rozmiary folderów - porównanie zajętości przestrzeni

⚙️ Konfiguracja

  • Ignorowanie plików - pomijanie określonych rozszerzeń (.tmp, .log, itp.)
  • Ukryte pliki i foldery - opcja ignorowania plików systemowych
  • Zapamiętywanie ustawień - automatyczne zapisywanie ostatnich ścieżek i konfiguracji
  • Kolorowe wyświetlanie - przejrzysty interfejs z oznaczeniem różnic kolorami

🚀 Szybki start

Wymagania

Instalacja w 3 krokach

  1. Pobierz repozytorium

    git clone https://github.com/hackwell-eu/folder-compare-tool.git
    cd folder-compare-tool
  2. Uruchom instalację

    setup.bat
  3. Gotowe! Uruchom program

    start.bat

Instalacja manualna

# 1. Utwórz wirtualne środowisko
python -m venv venv

# 2. Aktywuj środowisko
venv\Scripts\activate

# 3. Zainstaluj zależności
pip install -r requirements.txt

# 4. Uruchom program
python porownaj_foldery.py

🔧 Status implementacji

  • Wielowątkowość: zaimplementowana (użycie ThreadPoolExecutor w porownaj_foldery.py dla obliczania hashy).
  • Wznowienie przerwanych operacji: zaimplementowane (zapis/odczyt postępu w comparison_progress.json).
  • Sumy kontrolne: obsługiwane sha256 i md5 (konfigurowalne w ustawieniach).
  • Eksport: TXT i CSV są obsługiwane przez program.
  • GUI: brak (wersja konsolowa). Projekt zawiera oddzielne repo dla wersji Linux/GUI (tylko dla windows).

Uwaga: powyższe funkcje zostały zweryfikowane w pliku porownaj_foldery.py.

🔗 Zależności

  • Plik requirements.txt zawiera używane biblioteki. W repo znajdują się m.in.:
    • colorama==0.4.6 (kolorowanie konsoli)

Instalacja zależności:

venv\Scripts\activate
pip install -r requirements.txt

🛠️ Skrypty instalacyjne

Jeżeli używasz PowerShell i masz problemy z uruchomieniem skryptów, wykonaj:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Uwaga: setup.bat instaluje obecnie jedynie pakiet colorama. Aby zainstalować wszystkie zadeklarowane zależności uruchom:

pip install -r requirements.txt

🖼️ Przykładowy wynik programu

Przykładowy fragment raportu TXT:

📊 STATYSTYKI OGÓLNE:
  Folder 1: 1,247 plików, rozmiar: 4.23 GB
  Folder 2: 1,189 plików, rozmiar: 4.01 GB
  Różnica rozmiaru: 225.87 MB

📈 PODSUMOWANIE RÓŻNIC:
  • Plików tylko w folderze 1: 58
  • Plików tylko w folderze 2: 0
  • Plików wspólnych: 1,189
  • setup.bat — tworzy wirtualne środowisko venv, instaluje zależności (colorama) i wyświetla instrukcję uruchomienia.
  • start.bat — aktywuje środowisko i uruchamia porownaj_foldery.py.

Jeżeli używasz PowerShell i masz problemy z uruchomieniem skryptów, wykonaj:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

📖 Użytkowanie

Podstawowe porównanie

  1. Uruchom program przez start.bat
  2. Podaj ścieżki do dwóch folderów
  3. Wybierz opcje porównania
  4. Odczekaj na zakończenie analizy
  5. Wyniki zostaną zapisane w pliku wynik_porownania-YYYY-MM-DD-XX.txt

Przykład użycia

Podaj ścieżkę do pierwszego folderu: C:\Backup\Stary
Podaj ścieżkę do drugiego folderu: C:\Backup\Nowy

Czy sprawdzić zawartość plików? (t/n): t
Ignorować ukryte pliki i foldery? (t/n): t

Jak chcesz wyświetlić wyniki?
1 - Zapisać do pliku i wyświetlić na ekranie
2 - Tylko zapisać do pliku
Wybierz opcję (1/2): 1

Czy eksportować także do CSV? (t/n): t

🎨 Działanie programu

Podsumowanie wykonawcze

┌────────────────────────────────────────────────────────────────────┐
│                    PODSUMOWANIE WYKONAWCZE                         │
└────────────────────────────────────────────────────────────────────┘

📊 STATYSTYKI OGÓLNE:
  Folder 1: 1,247 plików, rozmiar: 4.23 GB
  Folder 2: 1,189 plików, rozmiar: 4.01 GB
  Różnica rozmiaru: 225.87 MB

📈 PODSUMOWANIE RÓŻNIC:
  • Plików tylko w folderze 1: 58
  • Plików tylko w folderze 2: 0
  • Plików wspólnych: 1,189

Statystyki typów plików

📑 TYPY PLIKÓW - FOLDER 1:
  .jpg            →  523 plików (2.15 GB)
  .txt            →  312 plików (45.23 MB)
  .pdf            →  189 plików (1.89 GB)
  .docx           →   87 plików (123.45 MB)
  .xlsx           →   64 plików (67.89 MB)

🔧 Konfiguracja

Program automatycznie tworzy plik folder_compare_config.json z ustawieniami:

{
  "last_folder1": "C:\\Projekty\\Folder1",
  "last_folder2": "D:\\Backup\\Folder1",
  "ignored_extensions": [".tmp", ".log", ".cache"],
  "hash_algorithm": "sha256"
}

Dostępne opcje:

  • last_folder1/2 - ostatnio używane ścieżki
  • ignored_extensions - ignorowane rozszerzenia plików
  • hash_algorithm - algorytm hashowania (sha256 lub md5)

📊 Generowane pliki

Raporty tekstowe

  • wynik_porownania-YYYY-MM-DD-XX.txt - szczegółowy raport w formacie tekstowym
  • Automatyczna numeracja plików z tego samego dnia

Raporty CSV

  • wynik_porownania-YYYY-MM-DD-XX.csv - dane w formacie Excel
  • Łatwa analiza w arkuszach kalkulacyjnych

Pliki konfiguracyjne

  • folder_compare_config.json - zapisane ustawienia
  • comparison_progress.json - postęp do wznowienia (usuwany po zakończeniu)

🛠️ Rozwiązywanie problemów

Problem: "python nie jest rozpoznawany jako polecenie"

Rozwiązanie:

  • Zainstaluj Python z python.org
  • Podczas instalacji zaznacz ☑️ "Add Python to PATH"
  • Uruchom ponownie komputer

Problem: "ModuleNotFoundError: No module named 'colorama'"

Rozwiązanie:

venv\Scripts\activate
pip install colorama

Problem: Brak kolorów w konsoli

Informacja: Program działa również bez kolorów. Wszystkie funkcje są dostępne.

Problem: Błąd PowerShell przy aktywacji

Rozwiązanie:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

🤝 Wkład w rozwój

Chętnie przyjmę pull requesty! W przypadku większych zmian, proszę najpierw otwórz issue, aby omówić planowane zmiany.

Jak pomóc?

  1. Fork repozytorium
  2. Stwórz branch z funkcją (git checkout -b feature/NowaFunkcja)
  3. Commituj zmiany (git commit -m 'Dodaj nową funkcję')
  4. Push do brancha (git push origin feature/NowaFunkcja)
  5. Otwórz Pull Request

📝 TODO / Przyszłe funkcje

  • Synchronizacja folderów na podstawie porównania
  • Eksport do HTML z interaktywnym raportem
  • Porównywanie z archiwami ZIP

📄 Licencja

Ten projekt jest licencjonowany na licencji MIT - zobacz plik LICENSE dla szczegółów.

👤 Autor

Miłosz Smoliński

Packages

 
 
 

Contributors