To tylko dodatek do wszystkich dobrych odpowiedzi powyżej na wypadek, gdyby ktoś nie zdawał sobie sprawy, jak łatwo jest zautomatyzować cały proces w VB / C #, aż do archiwum zip.
Więc po prostu pobierasz prostą aplikację Forms z szablonów (jeśli nie masz jeszcze aplikacji do sprzątania) i dodajesz do niej przycisk, a następnie ClickOnce instalujesz ją na pulpicie, nie martwiąc się o specjalne ustawienia lub wiele innych rzeczy. To cały kod, który musisz dołączyć do przycisku:
Imports System.IO.Compression
Private Sub btnArchive_Click(sender As Object, e As EventArgs) Handles btnArchive.Click
Dim src As String = "C:\Project"
Dim dest As String = Path.Combine("D:\Archive", "Stub" & Now.ToString("yyyyMMddHHmmss") & ".zip")
If IsProjectOpen() Then
MsgBox("Close projects first, (expletive deleted)", vbOKOnly)
Exit Sub
End If
If MsgBox("Are you sure you want to delete bin and obj folders?", vbOKCancel) = DialogResult.Cancel Then Exit Sub
If ClearBinAndObj(src) Then ZipFile.CreateFromDirectory(src, dest)
End Sub
Public Function ClearBinAndObj(targetDir As String) As Boolean
Dim dirstodelete As New List(Of String)
For Each d As String In My.Computer.FileSystem.GetDirectories(targetDir, FileIO.SearchOption.SearchAllSubDirectories, "bin")
dirstodelete.Add(d)
Next
For Each d As String In My.Computer.FileSystem.GetDirectories(targetDir, FileIO.SearchOption.SearchAllSubDirectories, "obj")
dirstodelete.Add(d)
Next
For Each d In dirstodelete
Try
Directory.Delete(d, True)
Catch ex As Exception
If MsgBox("Error: " & ex.Message & " - OK to continue?", vbOKCancel) = MsgBoxResult.Cancel Then Return False
End Try
Next
Return True
End Function
Public Function IsProjectOpen()
For Each clsProcess As Process In Process.GetProcesses()
If clsProcess.ProcessName.Equals("devenv") Then Return True
Next
Return False
End Function
Należy pamiętać, że usuwanie systemu plików może łatwo pójść nie tak. Jednym z moich ulubionych było to, gdy zdałem sobie sprawę, że nie mogę usunąć folderu, ponieważ zawierał elementy utworzone przez program Visual Studio podczas pracy z podwyższonymi uprawnieniami (aby móc debugować usługę).
Musiałem ręcznie udzielić pozwolenia lub, jak przypuszczam, uruchomić aplikację również z podwyższonymi uprawnieniami. Tak czy inaczej, myślę, że zastosowanie interaktywnego podejścia opartego na graficznym interfejsie użytkownika zamiast skryptu ma pewną wartość, zwłaszcza że jest to prawdopodobnie coś, co jest wykonywane pod koniec długiego dnia i nie chcesz później dowiedzieć się, że twoja kopia zapasowa tak naprawdę nie istnieje ...