Ein VB Script aus der c't

Hallo Experten,

in der letzten c’t war ein recht interessantes Script abgebildet, was ich mal abgetippt habe. (ich habe ÜBERHAUPT keine Ahnung von Programmierung!)
Leider funktioniert es nicht so wie es soll.
Es hat die Aufgabe, die DLL Dateien im Windows\System Verzeichnis mit den Versionsnummern in eine html Datei zu schreiben. Es wird bei den Versionsnummern aber immer nur „??“ angezeigt.
Könnt Ihr den Fehler finden ?
Falls der Programmablauf durch das posten hier nicht mehr funktioniert, kann ich es auch per Mail schicken !
Danke !

’ Versionen VBS
’ listet alle dll’s im Systemordner mit
’ ihrer internen Versionsnummer auf

set wshshell = CreateObject(„WScript.Shell“)
set fs = CreateObject(„Scripting.FileSystemObject“)

’ Diese Liste nimmt Versionsinfos auf:
redim liste(3000,1)
counter=0

wshshell.Popup „Prüfe DLL-Versionen. bitte Geduld!“, 1

’ Windows-Ordner ermitteln:
windir = wshshell.ExpandEnvironmentStrings("%WINDIR%")

’ Protokolldatei öffnen:
Logbuchname = „C:\DLL.HTM“
set Logbuch = fs.CreateTextFile(logbuchname, true)
Logbuch.WriteLine „td {font:10pt Arial;“ _
& " background:""#CCCCCC""}"
Logbuch.WriteLine " DLL-Name" _
& " Version"

’ Systemordner öffnen:
set system = fs.GetFolder(windir & „\system“)

’ alle Dateien darin kontrollieren:
for each file in system.files
ext = lcase(fs.GetExtensionName(file.name))
if ext=„dll“ then
’ es ist einen DLL, also Version bestimmen:
ver = GetVer(file.path)
'notieren:
liste(counter,0) = lcase(file.name)
liste(counter,1) = ver
counter = counter + 1
end if
next

SortResult 0
WriteResult

’ Protokoll schließen und anzeigen:
Logbuch.WriteLine „“
Logbuch.Close
wshshell.run Logbuchname

function GetVer(pfad)
on error resume next
GetVer = CStr(fs.getFileVersion(pfad))
if not err.Number=0 then
GetVer = „??“
err.clear
end if
end function

sub WriteResult
for x=0 to counter-1
logbuch.WriteLine „“ _
& liste(x,0) & „“ _
& liste(x,1) & „“
next
end sub

sub sortresult(modus)
if modus1 then
MsgBox „Sortiermodus muss 0 oder 1 sein!“
exit sub
end if
for x=0 to counter-1
if liste(x,modus)>liste(y,modus) then
temp1 = liste(x,0)
temp2 = liste(x,1)
liste(x,0) = liste(y,0)
liste(x,1) = liste(y,1)
liste(y,0) = temp1
liste(y,1) = temp2
end if
next
end sub

Was für ein VB?

Hallo Experten,

in der letzten c’t war ein recht
interessantes Script abgebildet, was ich
mal abgetippt habe. (ich habe ÜBERHAUPT
keine Ahnung von Programmierung!)
Leider funktioniert es nicht so wie es
soll.

Was heisst denn „mal abgetippt“ - unter welcher Programmumgebung soll es denn bei dir laufen? (Die c’t-Leute sind wohl vom Scripting Host ausgegangen - bei anderen Umgebungen muss man wohl Anpassungen vornehmen…)

Reinhard

Kleine Anmerkung zu Scripten aus PC-Zeitschriften oder Programmierhandbüchern.
Hier sind die Scripte oftmals etwas zusammengequetscht in einer Spalte dargestellt. Ist der Text einer Zeile länger als die Spalte, so verwendet man üblicherweise das Zeichen " _ ", um zu kennzeichnen, dass der Text in der nächsten Zeile eigentlich noch zu der Zeile gehört.
Das Script erkennt diesen Befehl allerdings nicht.
Habe Dir das korrigierte Script via Email geschickt. Teste es mal aus.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]