(SOFT) SOFT (2009 год)

RemoveOldFile - утилита удаления устаревших файлов

Кампутеры с большим количеством дисков постоянно забиваются различными файлами, особенно устаревшими бекапами баз, которые занимают много места. Поэтому на практике возникает задачка чистки дисков от устаревших файлов.

OpenSource утилитку для решения этой задачки вы видите ниже:


   1:  Module Module1
   2:   
   3:      Dim Extension As String
   4:      Dim RemovDate As DateTime
   5:      Dim PermTrash As Integer
   6:   
   7:      Sub Main()
   8:          Dim OneDirOnly As Boolean = False
   9:          Dim PRM() As String = Environment.GetCommandLineArgs
  10:          If PRM.Count < 4 Then
  11:              GoTo usage
  12:          ElseIf PRM.Count = 4 Then
  13:              OneDirOnly = False
  14:          ElseIf PRM.Count = 5 Then
  15:              OneDirOnly = True
  16:          Else
  17:              GoTo usage
  18:          End If
  19:          '
  20:          Try
  21:              Extension = "*." & PRM(1).Replace(".", "")
  22:              RemovDate = Now.AddDays(-CInt(PRM(2)))
  23:              If PRM(3).ToLower = "check" Then
  24:                  PermTrash = 1
  25:              ElseIf PRM(3).ToLower = "perm" Then
  26:                  PermTrash = 2
  27:              ElseIf PRM(3).ToLower = "trash" Then
  28:                  PermTrash = 3
  29:              Else
  30:                  GoTo usage
  31:              End If
  32:          Catch ex As Exception
  33:              Console.WriteLine(ex.Message)
  34:              GoTo usage
  35:          End Try
  36:          '
  37:          If OneDirOnly Then
  38:              ProcessDir(PRM(4))
  39:          Else
  40:              For Each Drive As IO.DriveInfo In IO.DriveInfo.GetDrives
  41:                  If Drive.DriveType = IO.DriveType.Fixed Then
  42:                      Console.WriteLine(Drive.Name)
  43:                      ProcessDir(Drive.Name)
  44:                  End If
  45:              Next
  46:          End If
  47:   
  48:          'Console.ReadLine()
  49:          Exit Sub
  50:  usage:
  51:          Console.WriteLine("Usage:   RemoveOldFile.exe Extension Ago trash/perm" & vbCrLf & _
  52:                            "Parm:    Удалять файлы с расширением Extension, устаревшие на Ago дней. trash - в корзину, perm - навсегда, check - только поиск файлов." & vbCrLf & _
  53:                            "Example: RemoveOldFile bak 30 perm - удалить все бекапы со всех дисков старше 30 дней " & vbCrLf & _
  54:                            "может быть задан четвертый параметр - конкретная директория")
  55:          Exit Sub
  56:      End Sub
  57:   
  58:   
  59:      ''' <summary>
  60:      ''' Рекурсивный обход каталогов
  61:      ''' </summary>
  62:      Private Sub ProcessDir(ByVal StartPath As String)
  63:          If StartPath.Contains(":\RECYCLER\") Or StartPath.Contains(":\System Volume Information") Then
  64:              'корзину и системные области каждого диска не чистим
  65:              Exit Sub
  66:          End If
  67:          '
  68:          Dim X As New IO.DirectoryInfo(StartPath)
  69:          Dim FileList() As IO.FileInfo
  70:          Dim DirList() As IO.DirectoryInfo
  71:          '
  72:          Try
  73:              FileList = X.GetFiles(Extension)
  74:          Catch ex As Exception
  75:              Console.WriteLine(ex.Message)
  76:              Exit Sub
  77:          End Try
  78:          '
  79:          Try
  80:              For Each OneFile As IO.FileInfo In FileList
  81:                  If OneFile.LastAccessTime < RemovDate Then
  82:                      Console.WriteLine(OneFile.FullName & " (" & OneFile.LastAccessTime.ToString & ")")
  83:                      If PermTrash > 1 Then
  84:                          Try
  85:                              If My.Computer.FileSystem.FileExists(OneFile.FullName) Then
  86:                                  My.Computer.FileSystem.DeleteFile(OneFile.FullName, FileIO.UIOption.OnlyErrorDialogs, PermTrash)
  87:                                  Console.WriteLine("Remove.")
  88:                              End If
  89:                          Catch ex As Exception
  90:                              Console.WriteLine(ex.Message)
  91:                          End Try
  92:                      End If
  93:                  End If
  94:              Next
  95:          Catch ex As Exception
  96:              Console.WriteLine(ex.Message)
  97:          End Try
  98:          '
  99:          Try
 100:              DirList = X.GetDirectories()
 101:          Catch ex As Exception
 102:              Console.WriteLine(ex.Message)
 103:              Exit Sub
 104:          End Try
 105:          '
 106:          For Each OneDir As IO.DirectoryInfo In DirList
 107:              ProcessDir(OneDir.FullName)
 108:          Next
 109:      End Sub
 110:   
 111:  End Module


Comments ( )
Link to this page: //www.vb-net.com/RemoveOldFile/index.htm
< THANKS ME>