Einige Unterordner löschen, einige nicht mit Visual Basic 2008 Express
Hallo Comunity!
Ich habe folgendes Problem:
Ich habe einige automatisch erstellte Archivordner. Diese enthalten Unterordner die nach dem entspr. Monatsdatum benannt werden (bspw: 06-2010).
Jetzt möchte ich mit Visual Basic 2008 die alten Ordner löschen. Es sollen aber die 6 aktuellsten Monate nicht gelöscht werden.
Diese habe ich folgendermaßen herausgefiltert:
Dim a As String = Date.Today.ToString("M-yyyy")
Dim b As String = Date.Now.Month.ToString
Dim c As String = b - 5 & Date.Today.ToString("-yyyy")
Dim d As String = b - 4 & Date.Today.ToString("-yyyy")
Dim ee As String = b - 3 & Date.Today.ToString("-yyyy")
Dim f As String = b - 2 & Date.Today.ToString("-yyyy")
Dim g As String = b - 1 & Date.Today.ToString("-yyyy")
Löschen würde ich so:
IO.Directory.Delete(Pfad, True)
Wie kann ich dort jetzt die Ausnahmen einfügen? Bspw: IO.Directory.Delete(Pfad, Ausgenommen a c d ee f g, True)
Ich hoffe, dass jemand mein "Problem" versteht.
Ich bin auch für andere Lösungsvorschläge offen!
Gruß
Felix
Ich habe folgendes Problem:
Ich habe einige automatisch erstellte Archivordner. Diese enthalten Unterordner die nach dem entspr. Monatsdatum benannt werden (bspw: 06-2010).
Jetzt möchte ich mit Visual Basic 2008 die alten Ordner löschen. Es sollen aber die 6 aktuellsten Monate nicht gelöscht werden.
Diese habe ich folgendermaßen herausgefiltert:
Dim a As String = Date.Today.ToString("M-yyyy")
Dim b As String = Date.Now.Month.ToString
Dim c As String = b - 5 & Date.Today.ToString("-yyyy")
Dim d As String = b - 4 & Date.Today.ToString("-yyyy")
Dim ee As String = b - 3 & Date.Today.ToString("-yyyy")
Dim f As String = b - 2 & Date.Today.ToString("-yyyy")
Dim g As String = b - 1 & Date.Today.ToString("-yyyy")
Löschen würde ich so:
IO.Directory.Delete(Pfad, True)
Wie kann ich dort jetzt die Ausnahmen einfügen? Bspw: IO.Directory.Delete(Pfad, Ausgenommen a c d ee f g, True)
Ich hoffe, dass jemand mein "Problem" versteht.
Ich bin auch für andere Lösungsvorschläge offen!
Gruß
Felix
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 156493
Url: https://administrator.de/contentid/156493
Ausgedruckt am: 25.11.2024 um 20:11 Uhr
3 Kommentare
Neuester Kommentar
Moin.
du musst die Verz.-Ebene über deinem Pfad durchlaufen und alles löschen was nicht deinen Kriterien entspricht:
.Etwa so:
Genauen Syntax btw Klassennamen musst du dir selbst raussuchen, hab z.Zt. kein VS installietr.
lg,
SLainte
du musst die Verz.-Ebene über deinem Pfad durchlaufen und alles löschen was nicht deinen Kriterien entspricht:
.Etwa so:
for each dir as ... in io.GetDirectories(Pfad)
if dir.path <> c and dir.path <> d..... then
io....delete(dir,true)
end if
next
Genauen Syntax btw Klassennamen musst du dir selbst raussuchen, hab z.Zt. kein VS installietr.
lg,
SLainte
... oder, da die Ermittlung von c, d, e, ... ohnehin ziemlich fragwürdig ist (ungetesteter Ansatz):
Dem Beispiel "06-2010" entsprechend wäre übrigens die Formatierung mit "MM-yyyy" passender ...
BTW: Die Schreibweise "M-JJJJ" (oder auch "MM-JJJJ") für die Monatsordner finde ich suboptimal - abgesehen von der besseren Sortierbarkeit würde sich mit "JJJJ-MM" das Ganze darauf reduzieren, den String für den ersten nicht zu löschenden Monat zu ermitteln und danach einfach per
zu vergleichen.
Grüße
bastla
Dim i as Integer, Excl As String = "#"
For i = -5 To 0
Excl = Excl & DateAdd(DateInterval.Month, i, Date.Today).ToString("M-yyyy") & "#"
Next
Dim Folder, FolderName As String
For Each Folder In IO.Directory.GetDirectories("D:\Archiv")
FolderName = Mid(Folder, InStrRev(Folder, "\") + 1)
If InStr(Excl, "#" & FolderName & "#") = 0 Then IO.Directory.Delete(Folder, True)
Next
BTW: Die Schreibweise "M-JJJJ" (oder auch "MM-JJJJ") für die Monatsordner finde ich suboptimal - abgesehen von der besseren Sortierbarkeit würde sich mit "JJJJ-MM" das Ganze darauf reduzieren, den String für den ersten nicht zu löschenden Monat zu ermitteln und danach einfach per
If FolderName < EntsprechenderMonat Then ...
Grüße
bastla