43344
Mar 25, 2008, updated at Oct 18, 2012 (UTC)
3381
5
0
Dateien erst nach Abgleich mit Archiv löschen
Tach zusammen,
ich habe folgendes geniale Teil:
hier: Alte Dateien nach x Tagen löschen und dabei bestimmte Dateiendungen ausschließen gefunden.
Kann man dem Tool noch erklären, dass es die alten Dateien ERST GENAU DANN löschen darf, wenn diese Dateien an einem anderen Ort (Archiv) vorhanden sind ????
Grueße vom Dorf ...
[Edit Biber] Als formatiert. [/Edit]
ich habe folgendes geniale Teil:
Set fso = CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")
On Error Resume Next
'* hier eigenen Bedürfnissen anpassen *
strOrdnerliste = "D:\Sicherung\Ordnerliste.txt"
strAusschlussliste = "D:\Sicherung\Ausschluss.txt"
Set objOrdnerliste = fso.OpenTextFile(strOrdnerliste, 1)
Verzeichnis = Split(objOrdnerliste.ReadAll, vbCrLF)
objOrdnerliste.Close
Set objAusschlussliste = fso.OpenTextFile(strAusschlussliste, 1)
If Not objAusschlussliste.AtEndOfStream Then 'falls nicht schon am Dateiende (= Datei ist leer) ...
Exclude = objAusschlussliste.ReadLine ' ... erste Zeile lesen und speichern ...
Else
Exclude = "" '... ansonsten gibt es keine Ausnahmen beim Löschen.
End If
objAusschlussliste.Close
Aufheben = 1 'Anzahl der Tage
' * Ende der Anpassungen *
Heute = Date()
For n = 0 To UBound(Verzeichnis)
Set Ordner = fso.GetFolder(Verzeichnis(n))
DeleteInFolder(Ordner)
Next
Sub DeleteInFolder(Ordner)
Set Dateien = Ordner.Files
' Alle Dateien in diesem Ordner abklappern
For Each Datei In Dateien
If Datei.DateLastModified < (Heute - Aufheben) Then
Ext = Mid(Datei.Name, InStrRev(Datei.Name, "."))
If InStr(Exclude, Ext) = 0 Then
On Error Resume Next
Datei.Delete
If Err And Err <> 70 Then MsgBox "Unerwarteter Fehler (Code=" & Err & ")", vbCritical: WScript.Quit
On Error Goto 0
End If
End If
Next
'Unterordner abklappern, DeleteInFolder rekursiv aufrufen
For Each Unter In Ordner.SubFolders
DeleteInFolder(Unter)
If (Unter.SubFolders.Count + Unter.Files.Count) = 0 Then Unter.Delete
Next
End Sub
hier: Alte Dateien nach x Tagen löschen und dabei bestimmte Dateiendungen ausschließen gefunden.
Kann man dem Tool noch erklären, dass es die alten Dateien ERST GENAU DANN löschen darf, wenn diese Dateien an einem anderen Ort (Archiv) vorhanden sind ????
Grueße vom Dorf ...
[Edit Biber] Als formatiert. [/Edit]
Please also mark the comments that contributed to the solution of the article
Content-Key: 83887
Url: https://administrator.de/contentid/83887
Printed on: April 22, 2024 at 23:04 o'clock
5 Comments
Latest comment
Hallo Stylewalker!
Abgesehen davon würde sich dafür aber vielleicht eine "Verschiebe"-Lösung (in einem der öfter hier im Forum vorkommenden Beiträge zum Thema "alte Dateien" oder "alte Ordner" - wie etwa "Robocopy - Alte Ordner verschieben" - solltest Du fündig werden) eher anbieten.
Grüße
bastla
Kann man dem Tool noch erklären, dass es die alten Dateien ERST GENAU DANN löschen darf, wenn diese Dateien an einem anderen Ort (Archiv) vorhanden sind ?
Wenn Du dem Tool (oder wenigstens mir) sagen kannst, wo (gleiche Ordnerstruktur?) / wie (nur Namensgleichheit oder zB auch gleiches Änderungsdatum?) im "Archiv" nach der jeweiligen Datei zu suchen ist ...Abgesehen davon würde sich dafür aber vielleicht eine "Verschiebe"-Lösung (in einem der öfter hier im Forum vorkommenden Beiträge zum Thema "alte Dateien" oder "alte Ordner" - wie etwa "Robocopy - Alte Ordner verschieben" - solltest Du fündig werden) eher anbieten.
Grüße
bastla
Hallo Stylewalker!
Da VBS keinen zu "fc" vergleichbaren Befehl kennt, könntest Du, wie oben schon angemerkt, Dateidatum und zB auch -größe vergleichen ("File.DateLastModified", "File.Size")oder trotzdem "fc" verwenden (ungetestete Skizze):
Grüße
bastla
Da VBS keinen zu "fc" vergleichbaren Befehl kennt, könntest Du, wie oben schon angemerkt, Dateidatum und zB auch -größe vergleichen ("File.DateLastModified", "File.Size")oder trotzdem "fc" verwenden (ungetestete Skizze):
If Not fc("D:\Datei1.doc", "E:\Datei1.doc") Then
'Dateien sind unterschiedlich ...
End If
Function fc(File1, File2)
Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec("fc /b " & Chr(34) & File1 & Chr(34) & " " & Chr(34) & File2 & Chr(34))
strResults = LCase(objExec.StdOut.ReadAll)
If InStr(strResults, "fc: keine unterschiede gefunden") Then
fc = True
Else
fc = False
End If
End Function
Grüße
bastla