private static void Main(string[] args) { Console.WriteLine("West Wind DeleteFiles Utility\r\n" + "(c) 2012, West Wind Technologies - www.west-wind.com\r\n"); if (args == null || args.Length == 0 || args[0] == "HELP" || args[0] == "/?") { string options = @" DeleteFiles <filespec> -r -f -y -l -d10 -s3600 Commands: --------- HELP || /? This help display Options: -------- pathSpec Path and File Spec. Make sure to add a filespec -r Delete files [R]ecursively -f Remove empty [F]olders -y Delete to Rec[Y]le Bin (can be slow!) -l Disp[L]ays items that would be deleted -dXX Number of [D]ays before the current date to delete -sXX Number of [S]econds before the current time to delete (seconds override days) if neither -d or -s no date filter is applied Examples: --------- DeleteFiles c:\temp\*.* -r -f - deletes all files in temp folder recursively and deletes empty folders DeleteFiles c:\temp\*.* -r -f -d10 - delete files 10 days or older DeleteFiles c:\temp\*.* -r -f -s3600 - delete files older than an hour DeleteFiles ""c:\My Files\*.*"" -r - deletes all files in temp folder recursively "; Console.WriteLine(options); return; } DeleteFilesCommandLineParser cmdLine = new DeleteFilesCommandLineParser(); cmdLine.Parse(); if (cmdLine.DisplayOnly) Console.WriteLine(DeleteFiles.Properties.Resources.DisplayOnlyModeNoFilesFoldersAreDeletedRN); DeleteFilesProcessor del = new DeleteFilesProcessor(); del.ProcessFiles(cmdLine); #if DEBUG Console.WriteLine("Done. Press any key to exit..."); Console.ReadKey(); #endif }
private static void Main(string[] args) { Version v = Assembly.GetExecutingAssembly().GetName().Version; string version = v.Major + "." + v.Minor; Console.WriteLine("West Wind DeleteFiles [Version {0}]\r\n", version); if (args == null || args.Length == 0 || args[0] == "HELP" || args[0] == "/?") { string options = @" DeleteFiles <filespec> -r -f -y -l -d10 -s3600 Commands: --------- HELP || /? This help display Options: -------- pathSpec FilePath and File Spec. Make sure to add a filespec -r Delete files [R]ecursively -f Remove empty [F]olders (start folder is not deleted) -y Delete to Rec[Y]le Bin (can be slow!) -l Disp[L]ays items that would be deleted -q0..2 Quiet mode: -q0 - all (default) -q1 - No file detail -q2 - No file detail, no summary -dXX Number of [D]ays before the current date to delete -sXX Number of [S]econds before the current time to delete (seconds override days) if neither -d or -s no date filter is applied (default) Examples: --------- DeleteFiles c:\temp\*.* -r -f - deletes all files in temp folder recursively and deletes empty folders DeleteFiles *.tmp -r - delete .tmp files recursively from current folder down DeleteFiles ""c:\My Files\*.*"" -r - deletes all files leaves folders DeleteFiles c:\temp\*.* -r -f -d10 - delete files 10 days or older DeleteFiles c:\temp\*.* -r -f -s3600 - delete files older than an hour DeleteFiles c:\thumbs.db -r - delete thumbs.db files on entire drive "; Console.WriteLine(options); return; } DeleteFilesCommandLineParser cmdLine = new DeleteFilesCommandLineParser(); cmdLine.Parse(); if (cmdLine.DisplayOnly) { Console.WriteLine(DeleteFiles.Properties.Resources.DisplayOnlyModeNoFilesFoldersAreDeletedRN); } DeleteFilesProcessor del = new DeleteFilesProcessor(cmdLine); del.ProcessFiles(); #if DEBUG Console.WriteLine("Done. Press any key to exit..."); Console.ReadKey(); #endif }
protected bool ProcessFolder(string activeFolder, DeleteFilesCommandLineParser parser) { ZetaLongPaths.ZlpFileInfo[] files; try { var folder = new ZetaLongPaths.ZlpDirectoryInfo(activeFolder); files = folder.GetFiles(parser.FileSpec); } catch (Exception e) { OnShowMessage(Resources.ErrorOpening + activeFolder + ". " + e.GetBaseException().Message); return(false); } bool success = true; foreach (var fi in files) { //var fi = new FileInfo(file); string file = fi.FullName; if (!fi.Exists) { continue; } try { if (IsFileToBeDeleted(fi.Name)) { long fsize = fi.Length; if (!parser.DisplayOnly) { if (parser.UseRecycleBin) { fi.MoveToRecycleBin(); } //FileSystem.DeleteFile(file, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin); else { try { File.Delete(fi.FullName); } catch (PathTooLongException ex) { // try again with long path routines fi.Delete(); } } catch (UnauthorizedAccessException ex) { fi.Attributes = ZetaLongPaths.Native.FileAttributes.Normal; fi.Delete(); } } OnShowMessage(Resources.Deleting + file); FileCount++; FileSizeCount += fsize; }
public DeleteFilesProcessor(DeleteFilesCommandLineParser parser = null) { Parser = parser; }
private static void Main(string[] args) { Version v = Assembly.GetExecutingAssembly().GetName().Version; string version = v.Major + "." + v.Minor; Console.WriteLine("West Wind DeleteFiles [Version {0}]\r\n", version); if (args == null || args.Length == 0 || args[0] == "HELP" || args[0] == "/?") { string options = @" DeleteFiles <filespec> -r -f -y -l -d10 -s3600 Commands: --------- HELP || /? This help display Options: -------- pathSpec FilePath and File Spec. Make sure to add a filespec -r Delete files [R]ecursively -f Remove empty [F]olders (start folder is not deleted) -y Delete to Rec[Y]le Bin (can be slow!) -l Disp[L]ays items that would be deleted -q0..2 Quiet mode: -q0 - all (default) -q1 - No file detail -q2 - No file detail, no summary -dXX Number of [D]ays before the current date to delete -sXX Number of [S]econds before the current time to delete (seconds override days) if neither -d or -s no date filter is applied (default) Examples: --------- DeleteFiles c:\temp\*.* -r -f - deletes all files in temp folder recursively and deletes empty folders DeleteFiles *.tmp -r - delete .tmp files recursively from current folder down DeleteFiles ""c:\My Files\*.*"" -r - deletes all files leaves folders DeleteFiles c:\temp\*.* -r -f -d10 - delete files 10 days or older DeleteFiles c:\temp\*.* -r -f -s3600 - delete files older than an hour DeleteFiles c:\thumbs.db -r - delete thumbs.db files on entire drive "; Console.WriteLine(options); return; } DeleteFilesCommandLineParser cmdLine = new DeleteFilesCommandLineParser(); cmdLine.Parse(); if (cmdLine.DisplayOnly) Console.WriteLine(DeleteFiles.Properties.Resources.DisplayOnlyModeNoFilesFoldersAreDeletedRN); DeleteFilesProcessor del = new DeleteFilesProcessor(cmdLine); del.ProcessFiles(); #if DEBUG Console.WriteLine("Done. Press any key to exit..."); Console.ReadKey(); #endif }
public DeleteFilesProcessor(DeleteFilesCommandLineParser parser = null) { Parser = parser; }
protected bool ProcessFolder(string activeFolder, DeleteFilesCommandLineParser parser) { ZetaLongPaths.ZlpFileInfo[] files; try { var folder = new ZetaLongPaths.ZlpDirectoryInfo(activeFolder); files = folder.GetFiles(parser.FileSpec); } catch (Exception e) { OnShowMessage(Resources.ErrorOpening + activeFolder + ". " + e.GetBaseException().Message); return false; } bool success = true; foreach (var fi in files) { //var fi = new FileInfo(file); string file = fi.FullName; if (!fi.Exists) continue; try { if (IsFileToBeDeleted(fi.FullName)) { long fsize = fi.Length; if (!parser.DisplayOnly) { if (parser.UseRecycleBin) fi.MoveToRecycleBin(); //FileSystem.DeleteFile(file, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin); else try { File.Delete(fi.FullName); } catch (PathTooLongException ex) { // try again with long path routines fi.Delete(); } catch (UnauthorizedAccessException ex) { fi.Attributes = ZetaLongPaths.Native.FileAttributes.Normal; fi.Delete(); } } OnShowMessage(Resources.Deleting + file); FileCount++; FileSizeCount += fsize; } } catch(Exception ex) { OnShowMessage(Resources.FailedToDelete + file); LockedFileCount++; success = false; } } if (parser.Recursive) { var folders = new ZetaLongPaths.ZlpDirectoryInfo(activeFolder); var dirs = folders.GetDirectories(); foreach (var directory in dirs) { string dir = directory.FullName; success = ProcessFolder(dir, parser); if (success && parser.RemoveEmptyFolders) { if (!directory.GetFiles().Any() && !directory.GetDirectories().Any()) try { if (!parser.DisplayOnly) { if (parser.UseRecycleBin) directory.MoveToRecycleBin(); //FileSystem.DeleteDirectory(dir, UIOption.OnlyErrorDialogs, // RecycleOption.SendToRecycleBin); else { try { Directory.Delete(directory.FullName); } catch (PathTooLongException ex) { directory.Delete(false); } catch (UnauthorizedAccessException ex) { if (parser.DeleteReadOnly) { directory.Attributes = ZetaLongPaths.Native.FileAttributes.Normal; directory.Delete(false); } } } } FolderCount++; OnShowMessage(Resources.DeletingDirectory + dir); } catch { OnShowMessage(Resources.FailedToDeleteDirectory + dir); } } } } return success; }