Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Results 1 to 9 of 9

Thread: Dateien auf Panel in Abhängigkeit des Erstelldatums löschen

  1. #1
    Join Date
    22.08.2018
    Posts
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen!

    Ich verwende eine 1513F CPU und das TP 1500 comfort.

    Aktuell erstelle ich über den Aufgabenplaner automatisch stündlich eine csv-Datei, die ich auf dem Touchpanel speichere. Das soll auch so bleiben.

    Ich möchte gerne nur die Dateien auf dem Panel behalten, die nicht älter als z.B. 4 Wochen sind. Alle anderen sollen gelöscht werden, da sonst die SD-Karte vollläuft und das Panel beginnt langsamer zu werden.

    Hat da jemand ne Idee, wie man das per Skript umsetzen kann? Auch andere Umsetzungsmöglichkeiten sind gerne gesehen.

    Vielen Dank im Voraus.
    Reply With Quote Reply With Quote Answered: Dateien auf Panel in Abhängigkeit des Erstelldatums löschen  

  2. "Lies mal in dem Thread weiter, wo Du meinen Skript-Entwurf her hast: Files löschen älter als 30 tage mit VB Script
    Ab Beitrag #11 beschreibt der User Tiamic quasi das gleiche Problem wie bei Dir, im Beitrag #13 berichtet er, daß er das Problem gelöst hat - ich verstehe allerdings seine Erklärung nicht so ganz ...

    Ich vermute: file = fso.Dir("\Storage Card SD\ProzessKopie\*.csv") liefert bei WinCE nicht den kompletten Pfad der Dateien sonder nur den Dateiname (Dein Test mit der Dateinamen-Auflistung müsste Dir das eigentlich gezeigt haben), FileDateTime und Kill benötigen aber den kompletten Pfad. Versuche mal so:
    Code:
    'WinCE: alle csv-Dateien löschen, welche älter als 30 Tage sind
    '(es wird nicht geprüft, ob ein Directory-Eintrag ein Ordner ist!)
    '(die Dateien dürfen nicht schreibgeschützt sein)
    Dim fso, file, killDate, path
    
    killDate = DateAdd("d", -30, Date)             'Stichdatum: Datum 30 Tage vor heute
    
    Set fso = CreateObject("FileCtl.FileSystem")
    
    path = "\Storage Card SD\ProzessKopie\"
    file = fso.Dir(path & "*.csv")
    
    Do While file <> ""                            'wenn mindestens 1 Datei gefunden
        file = path & file                         'dann Dateiname auf vollständigen Pfad erweitern
        If fso.FileDateTime(file) < killDate Then  'wenn Dateizeitstempel älter als Stichdatum
           fso.Kill file                           'dann Datei löschen
        End If
        file = fso.Dir()                           'weitere Datei vorhanden?
    Loop
    Harald"


  3. #2
    Join Date
    14.01.2015
    Posts
    5,240
    Danke
    1,158
    Erhielt 1,125 Danke für 835 Beiträge

    Default

    Mit Grüßen

    Gesendet von meinem Nokia 6310

  4. #3
    FabianSPS is offline Neuer Benutzer
    Themenstarter
    Join Date
    22.08.2018
    Posts
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    Vielen Dank für den Hinweis, jedoch klappt da irgendwas nicht richtig beim Heraussuchen der Dateien.

    Es wird keine Datei gefunden und dies wird als Meldung in der HMI angezeigt.

    Die CSV-Dateien liegen auf der SD-Karte im Ordner ProzessKopie. In diversen anderen Ordner auf der SD-Karte liegen ebenfalls csv-Dateien, die nicht gelöscht werden sollen.

    Vorraussetzugen sind: TP1500 comfort

    Code:
    
    Call ShowSystemAlarm("Delete old Prozessfiles is started.")
    
    Dim fso, file, killDate
    
    Datensicherung_Datum = Date                        'DEBUG: aktuelles Datum
    
    killDate = DateAdd("d", -30, Date)              'Stichdatum: Datum 30 Tage vor heute
    
    Datensicherung_Datum_1 = killDate                'DEBUG: Datum vor dem gelöscht werden muss
    
    Set fso = CreateObject("FileCtl.FileSystem")
    
    file = fso.Dir("\Storage Card SD\ProzessKopie\*.csv")
    
    Datensicherung_name = file                        'DEBUG: Anzeige welchen File er löscht
    
    Do While file <> ""                             'wenn mindestens 1 Datei gefunden
        
        If fso.FileDateTime(file) < killDate Then   'und Dateizeitstempel älter als Stichdatum
           fso.Kill file                            'dann Datei löschen
        End If
        file = fso.Dir()                             'weitere Datei vorhanden?
    Loop
    
    Call ShowSystemAlarm("Delete old Prozessfiles is finished.")
    Findet jemand den Fehler?
    Last edited by FabianSPS; 18.09.2019 at 07:12.

  5. #4
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    14,717
    Danke
    1,210
    Erhielt 4,345 Danke für 3,502 Beiträge

    Default

    Der Slot, wo Deine Speicherkarte drin steckt, heißt der "Storage Card SD"?
    Wird die SD-Karte erkannt? Ist sie vielleicht zu groß (zu viele GB)?
    Heißt der Ordner wirklich "ProzessKopie"? Ist er wirklich "ganz oben" im Hauptverzeichnis der SD-Karte?
    Wird überhaupt eine Datei oder Ordner auf der SD-Karte erkannt? Probiere mal das Skript so:
    Code:
    Call ShowSystemAlarm("Delete old Prozessfiles is started.") 'ShowSystemAlarm besser ohne Call und ohne Klammern
    
    Dim fso, file, killDate
    
    Datensicherung_Datum = Date                        'DEBUG: aktuelles Datum
    
    killDate = DateAdd("d", -30, Date)              'Stichdatum: Datum 30 Tage vor heute
    
    Datensicherung_Datum_1 = killDate                'DEBUG: Datum vor dem gelöscht werden muss
    
    Set fso = CreateObject("FileCtl.FileSystem")
    
    file = fso.Dir("\Storage Card SD\*.*")
    ShowSystemAlarm "Erste Datei: '" & file & "' gefunden"
    
    Datensicherung_name = file                        'DEBUG: Anzeige welchen File er löscht (zeigt hier nur den ersten Dateiname an)
    
    Do While file <> ""                             'wenn mindestens 1 Datei gefunden
        
    '    If fso.FileDateTime(file) < killDate Then   'und Dateizeitstempel älter als Stichdatum
    '       fso.Kill file                            'dann Datei löschen
    '    End If
        file = fso.Dir()                             'weitere Datei vorhanden?
    Loop
    
    Call ShowSystemAlarm("Delete old Prozessfiles is finished.") 'ShowSystemAlarm besser ohne Call und ohne Klammern
    Ich habe kein Comfort Panel. Haben die Comfort Panels wirklich keinen "Windows Explorer" an Bord? Damit könnte man sehen (und browsen), ob die Speicherkarte erkannt wird und was drauf ist.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #5
    Join Date
    14.01.2015
    Posts
    5,240
    Danke
    1,158
    Erhielt 1,125 Danke für 835 Beiträge

    Default

    Quote Originally Posted by PN/DP View Post
    ....Haben die Comfort Panels wirklich keinen "Windows Explorer" an Bord? Damit könnte man sehen (und browsen), ob die Speicherkarte erkannt wird und was drauf ist....

    Harald
    Haben sie ( Verknüpfung liegt ab Werk auf dem Desktop )
    Mit Grüßen

    Gesendet von meinem Nokia 6310

  7. Folgender Benutzer sagt Danke zu DeltaMikeAir für den nützlichen Beitrag:

    PN/DP (18.09.2019)

  8. #6
    FabianSPS is offline Neuer Benutzer
    Themenstarter
    Join Date
    22.08.2018
    Posts
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    Die SD-Karte ist von Siemens und hat 512 MB.

    Code:
    ShowSystemAlarm("Delete old Prozessfiles is started.") 'ShowSystemAlarm besser ohne Call und ohne Klammern
    
    Dim fso, file, killDate
    
    Datensicherung_Datum = Date                        'DEBUG: aktuelles Datum
    
    killDate = DateAdd("d", -30, Date)              'Stichdatum: Datum 30 Tage vor heute
    
    Datensicherung_Datum_1 = killDate                'DEBUG: Datum vor dem gelöscht werden muss
    
    Set fso = CreateObject("FileCtl.FileSystem")
    
    file = fso.Dir("\Storage Card SD\ProzessKopie\*.*")
    Call ShowSystemAlarm ("Erste Datei: '" & file & "' gefunden")
    
    Datensicherung_name  = file                        'DEBUG: Anzeige welchen File er löscht  (zeigt hier nur den ersten Dateiname an)
    
    Do While file <> ""                             'wenn mindestens 1 Datei gefunden
        
        If fso.FileDateTime(file) < killDate Then   'und Dateizeitstempel älter als Stichdatum
           fso.Kill file                            'dann Datei löschen
           Datensicherung_Test = 666
        End If
        file = fso.Dir()                             'weitere Datei vorhanden?
    Datensicherung_name = file                        'DEBUG: Anzeige  welchen File er löscht (zeigt hier nur den ersten Dateiname an)   
    
    Loop
    
    ShowSystemAlarm("Delete old Prozessfiles is finished.") 'ShowSystemAlarm besser ohne Call und ohne Klammern

    Habe deinen Code jetzt übernommen und dann wurde mir als Ergebnis der Ordner "SmartServer" angezeigt. Danach habe ich die Defintion von "file" angepasst. Wenn ich das Skript nun ausführe und die if-Verzweigung auskommentiere, werden mir der Reihe nach alle Dateien im Ordner angezeigt. Soweit ist also denke ich alles super.

    Sobald ich jedoch die if-Verzweigung wieder durchlaufen will, kommt folgende Meldung:


    Zeile 56: " If fso.FileDateTime(file) < killDate Then "

    Es wurde keine Datei gelöscht.
    Last edited by FabianSPS; 19.09.2019 at 07:30.

  9. #7
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    14,717
    Danke
    1,210
    Erhielt 4,345 Danke für 3,502 Beiträge

    Default

    Lies mal in dem Thread weiter, wo Du meinen Skript-Entwurf her hast: Files löschen älter als 30 tage mit VB Script
    Ab Beitrag #11 beschreibt der User Tiamic quasi das gleiche Problem wie bei Dir, im Beitrag #13 berichtet er, daß er das Problem gelöst hat - ich verstehe allerdings seine Erklärung nicht so ganz ...

    Ich vermute: file = fso.Dir("\Storage Card SD\ProzessKopie\*.csv") liefert bei WinCE nicht den kompletten Pfad der Dateien sonder nur den Dateiname (Dein Test mit der Dateinamen-Auflistung müsste Dir das eigentlich gezeigt haben), FileDateTime und Kill benötigen aber den kompletten Pfad. Versuche mal so:
    Code:
    'WinCE: alle csv-Dateien löschen, welche älter als 30 Tage sind
    '(es wird nicht geprüft, ob ein Directory-Eintrag ein Ordner ist!)
    '(die Dateien dürfen nicht schreibgeschützt sein)
    Dim fso, file, killDate, path
    
    killDate = DateAdd("d", -30, Date)             'Stichdatum: Datum 30 Tage vor heute
    
    Set fso = CreateObject("FileCtl.FileSystem")
    
    path = "\Storage Card SD\ProzessKopie\"
    file = fso.Dir(path & "*.csv")
    
    Do While file <> ""                            'wenn mindestens 1 Datei gefunden
        file = path & file                         'dann Dateiname auf vollständigen Pfad erweitern
        If fso.FileDateTime(file) < killDate Then  'wenn Dateizeitstempel älter als Stichdatum
           fso.Kill file                           'dann Datei löschen
        End If
        file = fso.Dir()                           'weitere Datei vorhanden?
    Loop
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. #8
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    14,717
    Danke
    1,210
    Erhielt 4,345 Danke für 3,502 Beiträge

    Default

    Quote Originally Posted by PN/DP View Post
    Ich vermute: file = fso.Dir("\Storage Card SD\ProzessKopie\*.csv") liefert bei WinCE nicht den kompletten Pfad der Dateien sonder nur den Dateiname (Dein Test mit der Dateinamen-Auflistung müsste Dir das eigentlich gezeigt haben)
    ja, jetzt sehe ich das auf Deinem Bild: es wird nur der Dateiname ohne Pfad geliefert

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  11. #9
    FabianSPS is offline Neuer Benutzer
    Themenstarter
    Join Date
    22.08.2018
    Posts
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke Harald. Das probiere ich morgen direkt aus.

    Hatte den anderen Beitrag auch gelesen und dort nach der genauen Syntax gefragt, weil ich nicht das gewünschte Ziel erreicht hatte. Hatte seine Angabe, wie der file gebildet wird, allerdings nicht verstanden; daher hier nochmal nachgefragt.

    EDIT: KLAPPT PERFEKT!!!! Danke
    Last edited by FabianSPS; 20.09.2019 at 07:56.

Similar Threads

  1. Replies: 8
    Last Post: 11.06.2015, 16:21
  2. Replies: 0
    Last Post: 18.07.2013, 07:24
  3. Zykluszeit des OB1 auf Panel anzeigen
    By eat1991 in forum Simatic
    Replies: 2
    Last Post: 26.11.2011, 08:27
  4. Dateien Löschen
    By c.wehn in forum PC- und Netzwerktechnik
    Replies: 10
    Last Post: 20.07.2011, 14:59
  5. Replies: 7
    Last Post: 07.01.2011, 15:16

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •