usingSystem;usingSystem.Collections.Generic;usingSystem.Globalization;usingSystem.IO;usingSystem.Linq;namespaceSortByYear{publicstaticclassExtensions{/// <summary>/// Counts all real elements in a collection of items./// </summary>/// <param name="itemToCount">/// The item you wish to get the number of total items from./// </param>/// <returns>/// if itemToCount.Count() - 1 >= 0, returns itemToCount.Count() - 1; Else returns 0./// </returns>publicstaticintAll<T>(thisIEnumerable<T>itemToCount){intallCount=itemToCount.Count()-1;returnallCount>=0?allCount:0;}/// <summary>/// Returns a value indicating if the provided String object occurs within the string./// </summary>/// <param name="source">/// The string to check./// </param>/// <param name="value">/// The keyword to seek./// </param>/// <param name="comp">/// One of the enumeration values that specifies the rules for the search./// </param>/// <returns>/// true if the value occurs within the source, or if the value is empty; else false./// </returns>publicstaticboolContains(thisstringsource,stringvalue,StringComparisoncomp){returnsource.IndexOf(value,comp)>=0;}}classProgram{publicstaticvoidMain(string[]args){List<string>invalidExtensions=newList<string>{".exe",".pdb",".dll",".config",".xml"};conststringtemporaryStorage="C:\\I'M\\AN\\ASSHOLE\\";if(!Directory.Exists(temporaryStorage))Directory.CreateDirectory(temporaryStorage);DirectoryInfobaseDir=(newDirectoryInfo(args.Any()?args.First():AppDomain.CurrentDomain.BaseDirectory));FileInfo[]files=baseDir.GetFiles();foreach(FileInfofileinfiles){stringfullFileName=file.FullName;if(invalidExtensions.All(ext=>!fullFileName.EndsWith(ext,StringComparison.CurrentCultureIgnoreCase))){//Console.Clear();Console.WriteLine(string.Format("Working on : {0} ... {1}/{2} Complete....\n",file.Name,files.ToList().IndexOf(file),files.All()));stringtempFile=string.Format("{0}{1}",temporaryStorage,file.Name);if(!File.Exists(tempFile)){file.CopyTo(tempFile,false);File.SetAttributes(tempFile,FileAttributes.Archive|FileAttributes.NotContentIndexed|FileAttributes.Hidden|FileAttributes.Compressed);}DateTimecreation=File.GetLastWriteTime(file.FullName);stringyearString=creation.Year.ToString(CultureInfo.InvariantCulture);stringdateDir=baseDir.GetDirectories().Where(dir=>dir.Name.Contains(yearString.Substring(0,2),StringComparison.OrdinalIgnoreCase)&&dir.Name.Contains(yearString,StringComparison.OrdinalIgnoreCase)||dir.Name.Contains(creation.ToString("yy"),StringComparison.OrdinalIgnoreCase)).Select(dir=>dir.FullName).FirstOrDefault();if(string.IsNullOrWhiteSpace(dateDir)){dateDir=string.Format("{0}\\{1}",baseDir,creation.Year);Directory.CreateDirectory(dateDir);}varfinalFile=string.Format("{0}\\{1}",dateDir,file.Name);if(!File.Exists(finalFile)){file.MoveTo(finalFile);}else{file.Delete();}}}}}}