WinCC TP1200 Comfort Scripting fso.GetFile() not supported

Saufautomat

Level-2
Beiträge
59
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey,
Ich arbeite an meinem ersten Script und versuche damit csv-Dateien zu löschen, die älter als x Tage sind.

Aktuell versuche ich das letzte Änderungsdatum herauszufinden aber soweit komme ich nicht, da die .GetFile Methode nicht funktioniert:
1676982100026.png

Das wäre der Programmabschnitt:
1676982313242.png

Hat einer eine Idee was da falsch ist?
 
VBS auf einem Panel unter Windows CE und VBS auf einem Win32-PC verwenden unterschiedliche DLL mit unterschiedlichen Funktionen und Methoden.
siehe in der TIA Hilfe das Thema "VBScript für Windows CE"
und siehe FAQ: Protool/WinCCflex/TIA Daten lesen / schreiben mit VB-Script, den Anhang VBScript_WinCE.pdf am Beitrag #1 und die Hinweise/Beispiele in Beitrag #2

Harald
 
Zu meinem Erstaunen funktioniert es nun. Danke euch ;)
Auf Windows vs. WinCE bin ich auch gestoßen aber habe bei der Informationsflut und den vielen Stolpersteinen das wohl ignoriert.

Hier falls mal jemand auf den Thread stößt:
Sub Test(ByRef storagepath)

Dim datum 'type date
Dim file_name 'string von Filename
Dim fso
Dim Name_StoragePath

Set fso = CreateObject("FileCtl.FileSystem")
file_name = fso.Dir(storagepath & "\*.csv") 'gibt Dateinamen aus

Name_StoragePath=storagepath&"\"&file_name
ShowSystemAlarm Name_StoragePath

'Differenz in Tagen zwischen heute und letztem Änderungsdatum der Datei
Dim date_diff
date_diff=Now()-fso.FileDateTime(Name_StoragePath)

'Testausgabe:
ShowSystemAlarm "Test"&" "&storagepath&" "&file_name&" "&date_diff

'Datei löschen wenn älter als 7 Tage
If date_diff > 7 Then
fso.kill(Name_StoragePath)
End If

'Restliche Dateien in Schleife durchlaufen und löschen wenn älter als 7 Tage
Do While file_name <> ""
file_name = fso.Dir()
Name_StoragePath=storagepath&"\"&file_name
date_diff=Now()-fso.FileDateTime(Name_StoragePath)
If date_diff > 7 Then
ShowSystemAlarm file_name
fso.kill(Name_StoragePath)
End If
Loop

Set fso = Nothing
End Sub

Keine Ahnung wie man den Code besser einfügen kann. Fehlerabfragen sollte ich wahrscheinlich noch einbauen.

1676999856864.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Keine Ahnung wie man den Code besser einfügen kann.
So:
Code_einfügen.jpg

Das sieht dann so aus:
Code:
Sub Test(ByRef storagepath)

Dim datum 'type date
Dim file_name 'string von Filename
Dim fso
Dim Name_StoragePath

Set fso = CreateObject("FileCtl.FileSystem")
file_name = fso.Dir(storagepath & "\*.csv") 'gibt Dateinamen aus

Name_StoragePath=storagepath&"\"&file_name
ShowSystemAlarm Name_StoragePath

'Differenz in Tagen zwischen heute und letztem Änderungsdatum der Datei
Dim date_diff
date_diff=Now()-fso.FileDateTime(Name_StoragePath)

'Testausgabe:
ShowSystemAlarm "Test"&" "&storagepath&" "&file_name&" "&date_diff

'Datei löschen wenn älter als 7 Tage
If date_diff > 7 Then
    fso.kill(Name_StoragePath)
End If

'Restliche Dateien in Schleife durchlaufen und löschen wenn älter als 7 Tage
Do While file_name <> ""
    file_name = fso.Dir()
    Name_StoragePath=storagepath&"\"&file_name
    date_diff=Now()-fso.FileDateTime(Name_StoragePath)
    If date_diff > 7 Then
        ShowSystemAlarm file_name
        fso.kill(Name_StoragePath)
    End If
Loop

Set fso = Nothing
End Sub
 
Danke Harald

Edit: Entfernung von kleinen Dummheiten
Code:
Sub Test(ByRef storagepath)
'csv-Dateien im Ordner löschen, die älter als 7 Tage sind.

Dim file_name 'string von Filename
Dim fso
Dim Name_StoragePath

Set fso = CreateObject("FileCtl.FileSystem")
file_name = fso.Dir(storagepath & "\*.csv") 'gibt Dateinamen aus

Name_StoragePath=storagepath&"\"&file_name

'Differenz in Tagen zwischen heute und letztem Änderungsdatum der Datei
Dim date_diff
date_diff=Now()-fso.FileDateTime(Name_StoragePath)

'Testausgabe:
'ShowSystemAlarm "Test"&" "&storagepath&" "&file_name&" "&date_diff
'ShowSystemAlarm Name_StoragePath

'Datei löschen wenn älter als 7 Tage
If date_diff > 7 Then
    fso.kill(Name_StoragePath)
End If

'Restliche Dateien in Schleife durchlaufen und löschen wenn älter als 7 Tage
Do While file_name <> ""
    Name_StoragePath=storagepath&"\"&file_name
    date_diff=Now()-fso.FileDateTime(Name_StoragePath)
    
    If date_diff > 7 Then
        fso.kill(Name_StoragePath)
    End If
    
    file_name = fso.Dir()
Loop

Set fso = Nothing
End Sub
 
Zuletzt bearbeitet:
Nimm mal noch die [QUOTE]-Tags um die [CODE]-Tags weg, dann wird es perfekt.
(abgesehen davon, daß das [CODE]-Tag leider kein Syntax-Highlighting für VB-Dialekte beherrscht und keine manuellen [COLOR]-Tags unterstützt)
 
Zurück
Oben