WinCC_VBS_FileExist_oder_Dir

Huan90

Level-1
Beiträge
15
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Mahlzeit,

ich bin gerade dabei in WinCC (Version 7.2) ein VB-Script zu schreiben, welches u.a. überprüfen soll, ob eine bestimmte Datei vorhanden ist.

Folgender Code läuft bei mir auf Fehler:
Code:
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExist(Verzeichnis) Then
Artikelnummer = 1
End If

Ebenfalls ausprobiert habe ich:
Code:
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.Dir(Verzeichnis) <> "" Then
Artikelnummer = 1
End If

Bei beiden Versuchen kommt folgende Fehlermeldung:
Das Objekt unterstützt diese Eigenschaft oder Methode nicht.: 'fso.FileExist' (oder eben 'fso.Dir').

Ich nehme mal an, dass mir hier wieder die eingeschränkte VBS-Bibliothek im Wege steht? Oder mache ich irgendetwas falsch?

Sollte es bei einem FileSystemObject weder die Methode "FileExist" noch "Dir" (im abgespeckten WinCC-VBS) geben, bräuchte ich einen alternativen Lösungsvorschlag.

Danke im Voraus für eure Mühen.
LG Huan90
 
Code:
If fso.Dir(Verzeichnis)
Gibt es nicht
Der Aufruf müsste dann
Code:
fso.FolderExists(Verzeichnis)
heissen.
FileExist unterstützt keine Verzeichnisse. Hie musst du einen Dateinamen inklusive Pfad übergeben.
Code:
If fso.FileExist(Datei)
Holger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,
danke für die Antwort. Ich hätte vielleicht erwähnen sollen, dass in "Verzeichnis", neben dem Verzeichnis auch der Dateiname steht.

Mittlerweile bin ich auf eine Lösung gekommen. (In der Hoffnung, dass niemals jemand aus jux eine Datei in das Verzeichnis schiebt)...

Code:
Set folder = fso.GetFolder(Verzeichnis)
   Set files = folder.Files
   n = 0
   For Each d In files
   n = n + 1
   Next
   
   If n > 0 Then
(Natürlich entspricht der Inhalt von "Verzeichnis" nun tatsächlich seinem Namen).

Danke fuer eure Hilfe,
LG Huan90
 
ich bin gerade dabei in WinCC (Version 7.2) ein VB-Script zu schreiben, welches u.a. überprüfen soll, ob eine bestimmte Datei vorhanden ist.
Mittlerweile bin ich auf eine Lösung gekommen. (In der Hoffnung, dass niemals jemand aus jux eine Datei in das Verzeichnis schiebt)...

Code:
Set folder = fso.GetFolder(Verzeichnis)
   Set files = folder.Files
   n = 0
   For Each d In files
   n = n + 1
   Next
   
   If n > 0 Then

Verrätst Du uns auch, was Deine Lösung mit Deinem Problem zu tun hat?
Nicht daß jemand den Code für die Lösung hält und nachmacht.

btw: Als professioneller(?) Programmierer darfst Du nicht "hoffen", daß die Ablaufumgebung Deinen Code nicht negativ beeinflußt - Du mußt schon selber den Code korrekt und robust schreiben und mögliche externe Probleme abfangen.

Harald
 
Nabend,
einmal für "Jemanden":
Der code:
Code:
Set folder = fso.GetFolder(Verzeichnis)
Set files = folder.Files
n = 0
For Each d In files
n = n + 1
Next

If n > 0 Then
Sucht nicht nach einer speziellen Datei, sondern durchsucht ein Verzeichnis und zählt die darin enthaltenen Dateien. Mit der Überprüfung "If n>0 Then" prüfe ich also, ob (irgend) eine Datei im angegebenen Verzeichnis vorhanden ist.

@Harald
Professioneller Programmierer bin ich nicht, ich habe eine Ausbildung zum Fachinformatiker Systemintegration abgeschlossen. Das Programmierern haben wir nur "nebenbei" gemacht. Mir fehlt hier schlichtweg die Erfahrung. Darüber, dass ich den code robuster schreiben sollte bin ich mir im Klaren. Allerdings wird diese Schnittstelle morgen getestet und da musste eine vorläufige Notlösung her.

LG Huan90
p.s. Sicher ist es sinnvoll für die Nachwelt noch einmal darauf hinzuweisen, dass meine Notlösung nicht genau das anfängliche Problem behandelt, aber wie wäre es eig. mal mit einem konkreten Lösungsvorschlag anstelle der "Klugscheißerei"? :razz:
p.p.s. Ein Verweis auf die Dokumentation der im WinCC enthaltenen VBS-Bibliotheken würde, zumindest mir, schon ausreichen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Konkreter Lösungsvorschlag: bei Deinem fso.FileExist fehlt am Ende ein s: fso.FileExists
Code:
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(Datei) Then
  Artikelnummer = 1
End If

Ich bin jetzt nicht sicher, ich meine, in WinCC 7.2 ist eine VBS-Dokumentation dabei. Doch ganz sicher: in WinCC flexible 2008 ... ist eine sehr umfassende Scripting Referenz in Deutsch dabei. Bei Microsoft finde ich die VBS Referenz nur auf englisch. Daß FileExists am Ende mit s geschrieben wird, das weiß Google sogar schon beim eintippen.

Oder schau mal hier in die FAQ, da sind viele VBS-Beispiele rund um Datei-funktionen, u.a. auch Funktionen FileExist(), FolderExist()...

Harald
 
Okay, diese Fehler häufen sich mittlerweile zu sehr, ich glaub das mit dem Programmieren geb ich besser auf -.-
Danke und... *schäm*

p.s.
Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.
 
Zurück
Oben