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