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
|