Permalänk
Medlem

[Program] Duplicate Checker

Tänkte här om dagen att jag skulle formatera min dator, men upptäckte att jag hade massa säkerhetskopior på gamla filer och så som jag inte visste om jag behövde ha kvar eller inte. I alla fall var det 30 gb och upp emot 60 000 filer som jag skulle behöva gå igenom, vilket inte riktigt föll mig på läppen så jag kom på idéen att göra ett program som skulle göra det åt mig. Då jag aldrig har programmerat med windows APIn (bara console program) så tänkte jag att det var ett bra tillfälle att lära sig det ...

Och nu är första betan klar och den funkar ganska bra. Testade även och köra det mot mina 30 gb av filer och funkade då utmärkt, restade bort precis det den skulle och inte en fil mer...

Men jag skulle gärna har lite kritik...

Så här använder man programmet:
Den har tre grundfunktioner... Första är att den kontrollerar en mapp mot en annan referens mapp. Låt säga att du har tagit massa säkerhetskopior på massa filer och har orginalen kvar men vet inte vilka av säkerhetskopiorna du har bland orginalen... då kan du sätta orginalen som referens så kollar den säkerhetskopiorna om de redan finns i referensen och tar bort dom som gör det.

Andra är att den kollar en mapp för dubbletter, låt säga att du har ett väldigt oordnat musikbiblotek och tror att det är många låtar det finns dubbletter av... så kollar den igenom och tar bort en av dom det finns två av.

Tredje funktionen är en version av de två andra (man får välja vilken) men med skillnaden att istället för att ta bort dubbletterna lägger den dom i en tabell så får du välja vad du ska göra med dom sen...

För varje grundfunktion kan du välja vissa parametrar, programmet jämför alltid filernas MD5 checksumma och storlek, men sen kan du välja till om den även ska jämföra Namn (inklusive filändelse), Filändelse, Namn på mappen filerna ligger i, och skapat datum...

Det går att köra flera av grundfunktionerna samtidigt (t.ex. kolla med referens och dubbletter inom mappen samtidigt). Om man kör med flera grundfunktioner så tar den dom i den ordningen jag beskrev dom, först jämför mot referens, sen mot egna mappen sen sist i tabellen.

Ett "schema" som jag kommit på är ganska bra är "Ta bort alla filer som är lika med referens jämför även namnet", "ta bort alla filer som har dubbletter inom mappen jämför även namnet", och "lägga till alla filer som stämmer med referensen enbart på checksumman och storleken i tabellen".

Hmm, praktiskt hur ni kör programmet, välj valen i menyn till höger... välj mappen som ska testas och, om det krävs, referens mappen... tryck på "start checking"... (Est. Time left funkar inte så bra än som ni kanske märker) Om ni har valt "index" (dvs. lägga till filerna i tabellen) så funkar det ganska logiskt... ni markerar filerna i checkboxen och väljer vad ni vill göra med dom på knapparna längst ner. lilla knappen på varje rad öppnas filen som den här filen jämfördes mot (och ansågs lika) och dubbelklickar du på en rad (utom på checkboxen eller knappen) så öppnar du filen som raden motsvarar. (ni kan även markera filer, så raden blir blå, och högerklicka och göra saker, men det funkar inte så bra än...)

Jag har lagt till ganska många såna tool tips så det förklarar lite bättre, men, som sagt, det är mitt första windows program så jag har lite kvar o lära till klockrena UIn.

Screenshot:

Nerladdning: http://www.poker-solitaire.com/DChecker/DuplicateChecker.exe

(Ni måste ha .NET 2.0 Frameworket installerat, finns för nedladdningar här http://www.microsoft.com/downloads/details.aspx?FamilyID=0856... )

OBS! Eftersom detta inte är färdigutvecklad (därmed risk för buggar) och folk kanske gör fel då UIn inte är så övertydlig och jag inte vill ha sura sweclockare som har fått halva hårddisken raderad har jag i den här versionen tagit bort delete funktionen (den kör som vanligt ända tills den egentligen skulle ta bort filen och då gör den inget) så programmet kan inte ta bort några filer (även om den säger att den har gjort det) så det behöver ni inte oroa er för, men även fast det absolut inte borde hända något så ansvarar ni själva över användandet av programmet.

Permalänk
Medlem

Ah, måste prova det snart. Språk?

Permalänk
Medlem

Oj sa jag inte det... det är c#

Vad tyckte du?

Permalänk
Medlem

Du borde göra så att det går att kolla dubletter i en enda mapp istället för en referens också. Allra helst så man kan välja att kolla i alla enheter på alla hårddiskar samtidigt.

Hur gör du kollen av filerna? Beräknar du MD5 för samtliga filer, även om storleken är olika? Det skulle ta över 3 timmar på en katalog jag testade, vilket verkar på tok för lång tid.

Jag gjorde ett liknande program förut och då gjorde jag såhär:

1. Jämför först endast storleken mellan filerna och rensa ur (ta bort ur listan, inte från disken) alla filer som inte är dubletter, detta går riktigt snabbt och får bort de mesta av filerna.

2. Beräkna CRC-32 för de första 4KB i varje fil och jämför, rensa ur alla som inte är dubletter. Snabbar upp rejält om man t ex har många RAR-filer som är exakt samma storlek.

3. Beräkna MD5 (jag använde SHA-1) för hela filen och jämför.

Permalänk
Medlem

Tack för tipsen madah!

förstår inte riktigt vad du menar med "Du borde göra så att det går att kolla dubletter i en enda mapp istället för en referens också.", alltså det går att kolla en enskilld mapp om det finns dubbletter i den utan referens mapp (genom att bara kryssa i 2an i menyn)...

Sen angående 3 timmar... som sagt est. time left funktionen funkar inte så bra... när jag körde igenom mina 30 gb så stod det att det skulle ta 84 timmar, men det tog bara 30-40 minuter så...