SortByName.exe C#
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; namespace SortByName { class Program { public static void Main(string[] args) { List<string> invalidExtensions = new List<string>{ ".exe", ".pdb", ".dll", ".config", ".xml" }; const string temporaryStorage = "C:\\I\\LOVE\\ANAL\\"; if (!Directory.Exists(temporaryStorage)) { Directory.CreateDirectory(temporaryStorage); } var baseDir = new DirectoryInfo(args.Any() ? args.First() : AppDomain.CurrentDomain.BaseDirectory); Collection<FileInfo> files = new Collection<FileInfo>((baseDir).GetFiles()); foreach (FileInfo file in files) { string subDirectory = null; string fileFirstCharacter = file.Name.Substring(0, 1); int toInt = 0; subDirectory = int.TryParse(fileFirstCharacter, out toInt) ? "0-9's" : fileFirstCharacter.ToUpperInvariant() + "'s"; //Console.Clear(); Console.WriteLine(string.Format("Working on : {0} ... {1}/{2} Complete....\n", file.Name, files.IndexOf(file), files.Count-1)); string fullFileName = file.FullName; if (invalidExtensions.All(ext => !fullFileName.EndsWith(ext, StringComparison.CurrentCultureIgnoreCase))) { string tempFile = 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); } var newDir = string.Format("{0}\\{1}", baseDir, subDirectory); if(!Directory.Exists(newDir)) { Directory.CreateDirectory(newDir); } string finalFile = string.Format("{0}\\{1}", file.Directory, file.Name); if(File.Exists(string.Format("{0}\\{1}", newDir, file.Name))) { File.Delete(string.Format("{0}\\{1}", newDir, file.Name)); } File.Move(finalFile, string.Format("{0}\\{1}", newDir, file.Name)); } } } } }