Advertisement
BlazePhoenix

Quick Delete File Program

Mar 19th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.83 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace DuplicateFileRemover
  8. {
  9.     class Program
  10.     {
  11.         static string searchDirectory = @"Z:\Music";
  12.         static string duplicateDirectory = @"F:\Possible Duplicates";
  13.  
  14.         static void Main(string[] args)
  15.         {
  16.             Console.Write("Generating file list...");
  17.             String[] allPaths = System.IO.Directory.GetFiles(searchDirectory, "*.*", System.IO.SearchOption.AllDirectories);
  18.             Console.WriteLine(" complete!");
  19.             Console.Write("Splitting list for potential duplicates...");
  20.             var allFiles = allPaths.GroupBy(s => s.Contains(" 1."));
  21.             var normalFiles = allFiles.First(c => c.Key == false);
  22.             var possibleDuplicates = allFiles.First(c => c.Key == true);
  23.             Console.WriteLine(" complete!");
  24.             var foundDuplicates = new List<String>();
  25.  
  26.             Console.Write("Checking for duplicates...");
  27.             foreach(var possibleDup in possibleDuplicates)
  28.             {
  29.                 var realName = possibleDup.Replace(" 1.", ".");
  30.                 if (normalFiles.Contains(realName))
  31.                 {
  32.                     foundDuplicates.Add(possibleDup);
  33.                 }
  34.             }
  35.             Console.WriteLine(" complete!");
  36.  
  37.             Console.WriteLine("Total Files: " + allPaths.Count());
  38.             Console.WriteLine("Number of Duplicates found: " + foundDuplicates.Count);
  39.             int count = 0;
  40.             int errorCount = 0;
  41.             int dupeCount = foundDuplicates.Count;
  42.  
  43.             Console.WriteLine("Moving duplicates to new location...");
  44.             foreach (var sourceFile in foundDuplicates)
  45.             {
  46.                 string file = System.IO.Path.GetFileName(sourceFile);
  47.                 string destFile = System.IO.Path.Combine(duplicateDirectory, file);
  48.  
  49.                 try
  50.                 {
  51.                     System.IO.File.Move(sourceFile, destFile);
  52.                 }
  53.                 catch (System.IO.IOException ioe)
  54.                 {
  55.                     Console.CursorTop += 1 + errorCount;
  56.                     Console.CursorLeft = 0;
  57.                     Console.WriteLine("Deleting {0}...", sourceFile);
  58.                     System.IO.File.Delete(sourceFile);
  59.                     errorCount++;
  60.                     Console.CursorLeft = 0;
  61.                     Console.CursorTop -= 1 + errorCount;
  62.                 }
  63.  
  64.                 count++;
  65.                 drawProgressBar(count, dupeCount);
  66.             }
  67.  
  68.             Console.CursorTop += 1 + errorCount;
  69.             Console.WriteLine("Files Preserved: {0}", count - errorCount);
  70.             Console.WriteLine("Files Deleted: {0}", errorCount);
  71.  
  72.             Console.Read();
  73.         }
  74.  
  75.         private static void drawProgressBar(int progress, int total)
  76.         {
  77.             Console.CursorLeft = 0;
  78.             Console.Write("[");
  79.             Console.CursorLeft = 32;
  80.             Console.Write("]");
  81.             Console.CursorLeft = 1;
  82.             float chunk = 30.0f / total;
  83.  
  84.             int position = 1;
  85.             for (int i = 0; i < chunk * progress; i++)
  86.             {
  87.                 Console.BackgroundColor = ConsoleColor.Green;
  88.                 Console.CursorLeft = position++;
  89.                 Console.Write(" ");
  90.             }
  91.  
  92.             for (int i = position; i <= 31; i++)
  93.             {
  94.                 Console.BackgroundColor = ConsoleColor.Gray;
  95.                 Console.CursorLeft = position++;
  96.                 Console.Write(" ");
  97.             }
  98.  
  99.             //draw totals
  100.             Console.CursorLeft = 35;
  101.             Console.BackgroundColor = ConsoleColor.Black;
  102.  
  103.             float percent = ((float)progress) / total;
  104.             Console.Write(percent.ToString("P"));
  105.         }
  106.     }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement