Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace DuplicateFileRemover
- {
- class Program
- {
- static string searchDirectory = @"Z:\Music";
- static string duplicateDirectory = @"F:\Possible Duplicates";
- static void Main(string[] args)
- {
- Console.Write("Generating file list...");
- String[] allPaths = System.IO.Directory.GetFiles(searchDirectory, "*.*", System.IO.SearchOption.AllDirectories);
- Console.WriteLine(" complete!");
- Console.Write("Splitting list for potential duplicates...");
- var allFiles = allPaths.GroupBy(s => s.Contains(" 1."));
- var normalFiles = allFiles.First(c => c.Key == false);
- var possibleDuplicates = allFiles.First(c => c.Key == true);
- Console.WriteLine(" complete!");
- var foundDuplicates = new List<String>();
- Console.Write("Checking for duplicates...");
- foreach(var possibleDup in possibleDuplicates)
- {
- var realName = possibleDup.Replace(" 1.", ".");
- if (normalFiles.Contains(realName))
- {
- foundDuplicates.Add(possibleDup);
- }
- }
- Console.WriteLine(" complete!");
- Console.WriteLine("Total Files: " + allPaths.Count());
- Console.WriteLine("Number of Duplicates found: " + foundDuplicates.Count);
- int count = 0;
- int errorCount = 0;
- int dupeCount = foundDuplicates.Count;
- Console.WriteLine("Moving duplicates to new location...");
- foreach (var sourceFile in foundDuplicates)
- {
- string file = System.IO.Path.GetFileName(sourceFile);
- string destFile = System.IO.Path.Combine(duplicateDirectory, file);
- try
- {
- System.IO.File.Move(sourceFile, destFile);
- }
- catch (System.IO.IOException ioe)
- {
- Console.CursorTop += 1 + errorCount;
- Console.CursorLeft = 0;
- Console.WriteLine("Deleting {0}...", sourceFile);
- System.IO.File.Delete(sourceFile);
- errorCount++;
- Console.CursorLeft = 0;
- Console.CursorTop -= 1 + errorCount;
- }
- count++;
- drawProgressBar(count, dupeCount);
- }
- Console.CursorTop += 1 + errorCount;
- Console.WriteLine("Files Preserved: {0}", count - errorCount);
- Console.WriteLine("Files Deleted: {0}", errorCount);
- Console.Read();
- }
- private static void drawProgressBar(int progress, int total)
- {
- Console.CursorLeft = 0;
- Console.Write("[");
- Console.CursorLeft = 32;
- Console.Write("]");
- Console.CursorLeft = 1;
- float chunk = 30.0f / total;
- int position = 1;
- for (int i = 0; i < chunk * progress; i++)
- {
- Console.BackgroundColor = ConsoleColor.Green;
- Console.CursorLeft = position++;
- Console.Write(" ");
- }
- for (int i = position; i <= 31; i++)
- {
- Console.BackgroundColor = ConsoleColor.Gray;
- Console.CursorLeft = position++;
- Console.Write(" ");
- }
- //draw totals
- Console.CursorLeft = 35;
- Console.BackgroundColor = ConsoleColor.Black;
- float percent = ((float)progress) / total;
- Console.Write(percent.ToString("P"));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement