Files löschen älter als 30 tage mit VB Script

spsbändiger

Level-2
Beiträge
20
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
möchte in einem Verzeichnis alle Dateien löschen die älter als z.b. 30 tage
sind.Ich benutze VB script unter WinCe.Mir fallen da im Moment nur sehr aufwendige Lösungen ein.Gibts da nicht einen einfachen Befehl(e)?
Dank Euch!
 
geklaut

Code:
*
Sub Main()
    Dim iTage As Integer
    'wieviele Tage die Datei alt sein muss
    iTage = 30
    LoescheDateien iTage
End Sub


Private Sub LoescheDateien(ByVal Tage As Integer)
    'Diese Routine löscht alle Text-Dateien die sich
    'im aktuellen Programmverzeichnis befinden und älter
    'als x Tage sind
    'Parameter: Tage    wieviele Tage die Datei alt sein muss
    
    Dim FSO As Object
    Dim Datei As File
    Dim Dateien As Files
    Dim Ordner As Folder
    Dim sDateiName As String
    Dim sPfad As String
    Dim DateiDatum As Date

    Set FSO = CreateObject("Scripting.FileSystemObject")
    'zum aktuellen Datum Tage addieren
    DateiDatum = DateAdd("D", -Tage, Format(Now, "dd.mm.yyyy"))
    sPfad = App.Path
    'Ordner festlegen
    Set Ordner = FSO.GetFolder(sPfad)
    Set Dateien = Ordner.Files
    'Pfad ohne Backslash am Ende formatieren
    If Right(sPfad, 1) = "\" Then sPfad = Left(sPfad, Len(sPfad) - 1)
    'Dateien im aktuellen Programmverzeichnis durchlaufen
    For Each Datei In Dateien
        'Dateipfad zusammensetzen
        sDateiName = sPfad + "\" + Datei.Name
        'nach Text-Dateien filtern
        If UCase(FSO.GetExtensionName(sDateiName)) = "TXT" Then
            'Dateien älter als Tage löschen
            If DateDiff("d", FileDateTime(sDateiName), Now) > Tage Then
                'löschen erzwingen
                FSO.DeleteFile sDateiName, True
            End If
        End If
    Next
    'Objekte zerstören
    Set Ordner = Nothing
    Set Dateien = Nothing
    Set FSO = Nothing
End Sub
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja,danke für deine Mühe!
Der Haken an der Sache ist nur das,das ja auf Win CE laufen soll!
Leider werden die von dir aufgezeigten Operationen da nicht unterstützt.
Soweit war ich nämlich auch schon.
 
WinCE: alte csv-Dateien löschen

Code:
[COLOR="#008000"]'WinCE: alle csv-Dateien löschen, welche älter als 30 Tage sind[/COLOR]
[COLOR="#008000"]'(es wird nicht geprüft, ob ein Directory-Eintrag ein Ordner ist!)[/COLOR]
Dim fso, file, killDate

killDate = DateAdd("d", -30, Date)             [COLOR="#008000"]'Stichdatum: Datum 30 Tage vor heute[/COLOR]

Set fso = CreateObject("FileCtl.FileSystem")

file = fso.Dir("\Storage Card\*.csv")
Do While file <> ""                            [COLOR="#008000"]'wenn mindestens 1 Datei gefunden[/COLOR]
    If fso.FileDateTime(file) < killDate Then  [COLOR="#008000"]'und Dateizeitstempel älter als Stichdatum[/COLOR]
       fso.Kill file                           [COLOR="#008000"]'dann Datei löschen[/COLOR]
    End If
    file = fso.Dir()                           [COLOR="#008000"]'weitere Datei vorhanden?[/COLOR]
Loop

PS: das Skript funktioniert so noch nicht. Verbesserte Version siehe Beitrag #15

Harald
 
Zuletzt bearbeitet:
Hallo,

Ich möchte auch ältere Dateien auf einem USB-Stick (am Win CE Panel) löschen, aber leider werden die Befehle "FileDateTime" und "DateLastModified" nicht mehr unterstützt. :sad::sad:
Hat jemand einen Denkanstoß für mich. (Tia V15 ; TP1500 Comfort)
Danke
 
Hallo,
Das TP 1500 hatte eine entsprechende Systemmeldung ausgegeben. Auch der Editor im TIA stellte diese Befehle nicht zur Verfügung. Ich hatte mir auch Variablen angelegt, das Vergleichsdatum wurde gelesen aber nichts von den Dateien?

oaw1pjXOKN7PZz5Q59rBMmlDlIGcnxxzhpW7t0ewVnpOpylzhwELoivzFk82xzWT21vjOCsdGnOUlurgYvjK3NWIBD4egjOCgQCQ0L8D4soUaIMqQRnRYkSZUjlH7W5aellJQFCAAAAAElFTkSuQmCC



Gruß Michael
 

Anhänge

  • Fehler.PNG
    Fehler.PNG
    2,3 KB · Aufrufe: 25
Zuletzt bearbeitet:
Hallo,
:confused::rolleyes: leider hatte sich bei mir ein Schreibfehler eingeschlichen. Das "FileDateTime"-Objekt wird natürlich unterstützt.
Allerdings findet das Script aus Beitrag 7 keine Dateien (siehe Bild). :confused:
Die Dateien auf meinem USB-Stick zeigen auf dem Webserver des Panels das Attribut "Read-only" an. Müsste ich dieses erst entfernen?
Danke.

Grüsse Michael

[FONT=&quot]Fehler.png[/FONT]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Werden denn Dateien angezeigt, wenn Du auf dem Stick bei einer Datei das Attribut "Read-only" entfernst? (oder Dateien ohne Schreibschutz drauf kopierst)
Kann es sein, daß die Pfadangabe zum USB-Stick beim TP1500 anders heißen muß? (z.B. "\Storage Card USB\*.csv" )
Oder probiere mal, gezielt Dateien mit Read-only Attribut anzuzeigen:
Code:
file = fso.Dir("\Storage Card\*.csv"[COLOR="#0000FF"][B], 1[/B][/COLOR]) [COLOR="#008000"]'Read-only-Dateien anzeigen[/COLOR]

Wenn Du eine schreibgeschützte Datei löschen willst, dann mußt Du (ziemlich sicher) das Read-only Attribut erst entfernen, siehe die Methoden GetAttr und SetAttr

Harald
 
Jetzt habe ich festgestellt, das alle Dateien ( auch alle Archive auf der SD-Karte) in diesem Mini-Webbrowser, das Attribut "R" haben.:shock:
Beim Kunden ( TP1500er Panel mit V13) ist das nicht so! Auch auf meinem PG ( ist auch von "S....") wird kein Schreibschutz angezeigt !
Keine Ahnung was in der V15 anders ist, ich habe jedenfalls nirgendwo einen Schreibschutz eingestellt.:twisted:
Da ich im Moment kein weiteres Panel zum testen habe, war's das erst mal.:sad::sad:
Melde mich sobald ich weiter testen kann.
____________________________
Nachtrag:
Endlich fand ich Zeit um an meinem Problem der Dateilöschung weiter zu "testen". Ich beziehe mich auf das Script in Beitrag 7 !


Folgendes:
Wenn ich die Zeile: "file = fso.Dir("\Storage Card USB\*.csv")" so benutze, wird file gleich dem "tiefsten Pfad" auf meinem USB-Stick.
Und das ist bei mir ein vorhandenes Unterverzeichnis "SMARTSERVER" (dieses generiert sich selbständig).

Wenn ich die Zeile ändere in: "file = speicherort & "*.csv"" dann bleibe ich in dem richtigen Verzeichnis, mit den csv-Dateien und das Löschen funktioniert.
Danke Harald für die Denkanstöße!


Grüße Micha
 
Zuletzt bearbeitet:
Hey Micha,

ich erhalte die gleiche Fehlermeldung wie du in Beitrag 11. Allerdings will ich nicht von einem USB-Stick sondern von der SD-Karte aus dem Unterordner "ProzessKopie" die alten CSV-Dateien löschen.

Wenn ich eine bestimmte Datei als Pfad angebe, wird diese auch gelöscht.

Benutze ich allerdings *.csv klappt das leider nicht mehr.

Kannst du mir mal deinen Pfad so wie du im Skript in Klartext angegeben hast, hier posten.

Danke im Voraus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
[COLOR="#008000"]'WinCE: alle csv-Dateien löschen, welche älter als 30 Tage sind[/COLOR]
[COLOR="#008000"]'(es wird nicht geprüft, ob ein Directory-Eintrag ein Ordner ist!)[/COLOR]
[COLOR="#008000"]'(die Dateien dürfen nicht schreibgeschützt sein)[/COLOR]
Dim fso, file, killDate, path

killDate = DateAdd("d", -30, Date)             [COLOR="#008000"]'Stichdatum: Datum 30 Tage vor heute[/COLOR]

Set fso = CreateObject("FileCtl.FileSystem")

path = "\Storage Card SD\ProzessKopie\"
file = fso.Dir(path & "*.csv")

Do While file <> ""                            [COLOR="#008000"]'wenn mindestens 1 Datei gefunden[/COLOR]
    file = path & file                         [COLOR="#008000"]'dann Dateiname auf vollständigen Pfad erweitern[/COLOR]
    If fso.FileDateTime(file) < killDate Then  [COLOR="#008000"]'wenn Dateizeitstempel älter als Stichdatum[/COLOR]
       fso.Kill file                           [COLOR="#008000"]'dann Datei löschen[/COLOR]
    End If
    file = fso.Dir()                           [COLOR="#008000"]'weitere Datei vorhanden?[/COLOR]
Loop

Harald
 
Zurück
Oben