VBS-Script verursacht eine Fehlermeldung!
Hallo zusammen,
meine Geburtstag-Erinnerung .vbs Datei verursacht die folgende Fehlermeldung:
und hier die Quelle:
Die .ini Datei sieht z.B. wie folgt aus:
als birthday.ini gespeichert.
OS ist WinXP SP2.Die Frage wäre ob die Datei noch zum reparieren ist.
Falls jemand eine Lösung hätte dann würde ich mich sehr freuen!
Ich muss auch zugeben das meine Programmierkenntnise gleich null sind!
Schöne Grüsse,
costello
meine Geburtstag-Erinnerung .vbs Datei verursacht die folgende Fehlermeldung:
Skript: C:\Daten\birthday.vbs
Zeile: 36
Zeichen: 7
Fehler: Typen unverträglich: 'DateValue'
Code: 800A000D
Quelle: Laufzeitfehler in Microsoft VBScript
Dim objFileSystem
Dim objFile
Dim objTextStream
Dim szConfigFile
Dim szBirthday, szName, szThisYear, szNextYear, szComparisonDate
Dim szMessage
Dim iTime
Dim iDifference
' Standardwerte für einige Variablen
szConfigFile = "C:\DATEN\BIRTHDAY.INI"
iTime = 5
szMessage = ""
szThisYear = CStr(Year(date))
szNextYear = CStr(Year(date)+1)
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
' Config-Datei ermitteln, ...
If objFileSystem.FileExists(szConfigFile) Then
' ... öffnen...
Set objFile = objFileSystem.OpenTextFile(szConfigFile)
' ... und zeilenweise abarbeiten
Do until objFile.atEndOfStream
' Geburtstag und Name des Geburtstagskindes lesen
szBirthday = objFile.read(6)
szName = objFile.readLine
' Wieviele Tage sind es noch bis zum nächsten Geburtstag?
szComparisonDate = szBirthday & szThisYear
iDifference = DateDiff("y", date, DateValue(szComparisonDate))
' Falls der nächste Geburtstag allerdings erst im nächsten Jahr liegt
if (CInt(iDifference) < 0) then
szComparisonDate = szBirthday & szNextYear
iDifference = DateDiff("y", date, DateValue(szComparisonDate))
end if
' Wenn die Anzahl der Tage innerhalb der Frist liegt
if (CInt(iDifference) <= iTime) then
szMessage = szMessage & szName & " am " & szComparisonDate & " - noch " & iDifference & " Tage" & Chr(10)
end if
Loop
objFile.close
else
MsgBox "Die Config-Datei " & szConfigFile & " ist nicht vorhanden!", vbCritical, "Fehler"
end if
' Falls vorhaben, Liste der nächsten Geburtstage ausgeben
If szMessage<>"" Then
MsgBox szMessage, vbInformation, "Die nächsten Geburtstage"
End If
01.01. ich
02.02. du
OS ist WinXP SP2.Die Frage wäre ob die Datei noch zum reparieren ist.
Falls jemand eine Lösung hätte dann würde ich mich sehr freuen!
Ich muss auch zugeben das meine Programmierkenntnise gleich null sind!
Schöne Grüsse,
costello
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 78149
Url: https://administrator.de/contentid/78149
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo costello!
Mein Tipp wäre eine fehlerhafte Zeile in der "birthday.ini" ...
Zum Testen könntest Du nach
die Zeile
einfügen und das Script von der Kommandozeile (Start / Ausführen... / cmd) wie folgt starten:
(sinnvoller Weise solltest Du statt "C:\Scripts\Birthday.vbs" den Pfad zu Deinem Script verwenden ).
So kannst Du erkennen, nach welchem Datum / Namen der Fehler eintritt.
Grüße
bastla
P.S.: Bitte zum Posten von Code < code> / < /code>-Tags (ohne Leerzeichen) verwenden - dann wäre hoffentlich auch ersichtlich, ob das Script mit einer Leerzeile beginnt, da sich ansonsten die Zeilenangabe 36 schwer nachvollziehen lässt. Dies gilt auch für das Zeichen 7 - hier hätte ich eigentlich 1 erwartet.
Mein Tipp wäre eine fehlerhafte Zeile in der "birthday.ini" ...
Zum Testen könntest Du nach
szName = objFile.readLine
WScript.Echo szBirthday & " " & szName
cscript //nologo "C:\Scripts\Birthday.vbs"
So kannst Du erkennen, nach welchem Datum / Namen der Fehler eintritt.
Grüße
bastla
P.S.: Bitte zum Posten von Code < code> / < /code>-Tags (ohne Leerzeichen) verwenden - dann wäre hoffentlich auch ersichtlich, ob das Script mit einer Leerzeile beginnt, da sich ansonsten die Zeilenangabe 36 schwer nachvollziehen lässt. Dies gilt auch für das Zeichen 7 - hier hätte ich eigentlich 1 erwartet.
Hallo costello!
Den Fehler kann ich reproduzieren, allerdings nur mit einer ini-Zeile der Art "02.22. du", also einem ungültigen Datumsbestandteil.
Falls Deine ini-Datei sehr umfangreich sein sollte, kannst Du die Bildschirmausgabe des Scripts auch in eine Datei umleiten, indem Du es wie folgt aufrufst:
Falls Du mit freiem Auge tatsächlich kein fehlerhaftes Datum erkennen kannst, müssen wir eine Prüfung der Daten per Script versuchen ...
Grüße
bastla
P.S.: Danke für die Formatierung.
Das Script beginnt tatsächlich mit einer Leerzeile.
... dann kommt zumindest einmal die Position des Fehlers bei Zeichen 7 hin ...Den Fehler kann ich reproduzieren, allerdings nur mit einer ini-Zeile der Art "02.22. du", also einem ungültigen Datumsbestandteil.
Die eingefügte Zeile hat nach der überprüfung allen Datum / Namen Einträgen die selbe Fehlermeldung wie oben beschrieben gebracht.
Die eingefügte Zeile soll dabei helfen, die (vor)letzte korrekte Zeile der ini zu finden, da nach Verarbeitung einer fehlerhaften Zeile das Script abbricht - insofern darf diese Zeile keine Fehlermeldung verursachen.Falls Deine ini-Datei sehr umfangreich sein sollte, kannst Du die Bildschirmausgabe des Scripts auch in eine Datei umleiten, indem Du es wie folgt aufrufst:
cscript //nologo "C:\Scripts\Birthday.vbs" > C:\Protokoll.txt
Falls Du mit freiem Auge tatsächlich kein fehlerhaftes Datum erkennen kannst, müssen wir eine Prüfung der Daten per Script versuchen ...
Grüße
bastla
P.S.: Danke für die Formatierung.