Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Versionsnummer von OCX per batch auslesen und drucken

Frage Entwicklung Batch & Shell

Mitglied: NetMare1

NetMare1 (Level 1) - Jetzt verbinden

03.04.2007, aktualisiert 05.04.2007, 11240 Aufrufe, 6 Kommentare

Hallo,

mmh - grade angemeldet und schon ne Frage (oder war das der Grund meiner Anmeldung?! ;))

Es geht um folgendes:

Ich kopiere und regestriere per batch ein paar ocx-Dateien per folgedem Ausdruck:

z.B.:
copy MSCAL.OCX c:\windows\system32\
regsvr32 c:\windows\system32\MSCAL.OCX
.
.
.


Ich möchte (nachdem alle ocx Dateien regestriert sind die im Batch festgelegt sind) die aktuelle Versionsnummer der regestrierten Batchdateien anzeigen lassen und ausdrucken zu Dokumentationszwecken.

Frage ist:
Wie lese ich die Versionsnummer der ocx Dateien per batch aus und zeige sie dem Benutzer an und lasse diese dann ausdrucken?

Vieleicht kann mir da jemand helfen?!
Wie gesagt: es geht NICHT um das Datum der Dateien sondern um die Version.

Hoffe mal auf Antwort.

Gruß aus dem schönen Niedersachsen ;)
Mitglied: bastla
04.04.2007 um 17:31 Uhr
Hallo NetMare1 und (ein etwas verspätetes) Willkommen im Forum!

Für das Auslesen könnte ich eine kombinierte Batch/VB-Script-Lösung anbieten:
01.
@echo off & setlocal 
02.
set "Datei=c:\windows\system32\MSCAL.OCX" 
03.
set "GetV=%Temp%\GetV.vbs" 
04.
echo Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")>"%GetV%" 
05.
echo Set colFiles=objWMIService.ExecQuery ("SELECT * FROM CIM_Datafile WHERE Name='"^&Replace(WScript.Arguments(0),"\","\\")^&"'")>>"%GetV%" 
06.
echo For Each objFile in colFiles: WScript.Echo objFile.Version: Next>>"%GetV%" 
07.
set Version= 
08.
for /f %%i in ('cscript //nologo "%GetV%" "%Datei%"') do set "Version=%%i" 
09.
if defined Version echo %Datei% - Version %Version% 
10.
del "%GetV%"
Kurze Beschreibung: Das konkrete Auslesen erledigt eine temporäre VBS-Datei, die direkt im Batch erzeugt wird. An diese Script-Datei wird als Argument beim Aufruf die zu prüfende .ocx-Datei mit komplettem Pfad übergeben. Der Rückgabewert wird in der Variablen %Version% zur weiteren Verwendung gespeichert. Abschließend wird die Script-Datei gelöscht.

Die oben stehende Version ist (zum Testen) als "stand-alone"-Variante gedacht. Wenn mehrere Dateien überprüft werden sollen, könntest Du um die Zeilen "set Version=" bis "if defined ..." eine Schleife bauen, die jeweils den Dateinamen (aus einer ohnehin vorhandenen Liste?) liefert.

Dann würde es sich auch anbieten, die Ausgabe in eine Textdatei umzuleiten und diese dem Benutzer per Windows-Editor zur Ansicht bzw zum Ausdruck zur Verfügung zu stellen.

Grüße
bastla
Bitte warten ..
Mitglied: NetMare1
04.04.2007 um 17:44 Uhr
Hi bastla,

danke fuer das Willkommen...

...und die geniale Loesung!

Hast mir sehr geholfen!

Gruss,
NetMare

PS: geloest :D
Bitte warten ..
Mitglied: bastla
04.04.2007, aktualisiert 01.08.2013
Hallo NetMare1!

Freut mich, wenn's hilft.

Eine Anpassung möchte ich noch vorschlagen:
01.
for /f "delims=" %%i in ('cscript //nologo "%GetV%" "%Datei%"') do set "Version=%%i"
sorgt dafür, dass die Versionsinfo nicht durch zB Leerstellen auseinandergerissen wird (so habe ich gerade eben beim Testen folgende Versionsnummer - einer anderen .ocx-Datei - vorgefunden: 1, 0, 0, 1).

Grüße
bastla
Bitte warten ..
Mitglied: Soidberg
04.04.2007 um 23:37 Uhr
Sehr interessante Lösung.

Vielen Dank für diesen Beitrag, kommt mir gerade passend.

Gruß Soidberg
Bitte warten ..
Mitglied: Biber
05.04.2007 um 00:20 Uhr
Der Vollständigkeit halber (auch ich würde bastla's Variante vorziehen):

Es gibt naturlich auch diverse Konsolen-Utilities, die diese Versionsnummer anzeigen koennen.
Ein paar waren im Lauf der Zeit in der M$-ResKits dabei und tragen Namen wie FileVer.exe, FVer.exe oder so ähnlich.

Die M$-FileVer.exe hätte unter Umständen noch den Charme, dass damit auch Massenverarbeitung (also rekursive Abarbeitung von Dateien und Unterverzeichnissen) machbar ist und das zweifelhafte "Zusatzfeature", dass eine (erlaubte) nicht-konforme Versionsnummer wie von bastla gepostet automatisch geradegezogen wird.
Beispiel (die Datei GetOCXVersion.bat ist bastla's Skript, nur mit Inputparameter %1):
01.
>for %i in (c:\windows\system32\t*.ocx) do @f:\Administrator\GetOCXVersion.bat %i 
02.
c:\windows\system32\tabctl32.ocx - Version 6.00.9043 
03.
c:\windows\system32\tdc.ocx - Version 1, 3, 0, 3130 
04.
 
05.
>FileVer -bad c:\windows\system32\t*.ocx 
06.
W32i   DLL ENU       6.0.90.43 shp c:\windows\system32\tabctl32.ocx 
07.
W32i   DLL ENU      <b>1.3.0.3130</b> shp c:\windows\system32\tdc.ocx
"Zweifelhaft" also deshalb, weil man/frau offensichtlich SEHR aufpassen muss, wenn eine Versionsnummer ermittelt wird.
Je nach (M$-)Tool kann "1.3.0.3130" ODER "1, 3, 0, 3130" zurueckgegeben werden.

Gruss
Biber
Bitte warten ..
Mitglied: Biber
05.04.2007 um 18:19 Uhr
....wenn bastla schon solche Steilvorlagen liefert, dann sollen alle etwas davon haben...

01.
::--- snipp GetFileVer.Bat -- von Biber modifizierter bastla-Schnipsel 
02.
@echo off & setlocal 
03.
If "%*"=="" (echo Syntax: %~n0 [Lw:\Pfad\] Dateiname ^(Wildcards erlaubt^) &&  goto :eof) 
04.
set "GetV=%Temp%\GetV.vbs" 
05.
echo Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")>"%GetV%" 
06.
echo Set colFiles=objWMIService.ExecQuery ("SELECT * FROM CIM_Datafile WHERE Name='"^&Replace(WScript.Arguments(0),"\","\\")^&"'")>>"%GetV%" 
07.
echo For Each objFile in colFiles: WScript.Echo Replace(Replace(objFile.Version,",",".")," ",""): Next>>"%GetV%" 
08.
For %%i in (%*) do call :getVers "%%i" 
09.
del "%GetV%"  & goto :eof 
10.
:getvers 
11.
set "Version=" & for /f %%i in ('cscript //nologo "%GetV%" "%~1"') do set "Version=%%i" 
12.
if defined Version echo %~1 - Version %Version% 
13.
::---snapp GetFileVer.bat
In Aktion:
01.
>f:\administrator\GetFileVer.bat %windir%\system32\t*.ocx %windir%\system32\cs*.exe 
02.
C:\WINDOWS\system32\tabctl32.ocx - Version 6.00.9043 
03.
C:\WINDOWS\system32\tdc.ocx - Version 1.3.0.3130 
04.
C:\WINDOWS\system32\cscript.exe - Version 5.6.0.8820 
05.
C:\WINDOWS\system32\csrss.exe - Version 5.1.2600.2180(xpsp_sp2_rtm.040803-2158)
Frohe Ostern
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Systemdateien
gelöst Registry-Schlüssel per Batch auslesen und in Datei schreiben (9)

Frage von Philzip zum Thema Windows Systemdateien ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Batch & Shell
Per Batch aktuell angemeldete User auslesen (1)

Frage von Peter32 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (22)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...