ruebezahl
Goto Top

VER: Windows-Version und Versionsnummer in Variablen schreiben

Liebe Leute,


der Befehl VER gibt die aktuelle Windows-Version und die interne Programmversion aus. VER unter Windows 2000 zaubert die nachfolgende Zeile auf den Monitor:

Microsoft Windows 2000 [Version 5.00.2195]

Windows Server 2003 verzichtet sowohl auf den "Server" als auch auf die "2003" und gibt sich folgendermaßen zu erkennen:

Microsoft Windows [Version 5.2.3790]

Um nun die Windows-Version und die interne Programmversion auszulesen und sie in zwei verschiedenen Variablen abzuspeichern, habe ich das Folgende ausprobiert:

@ECHO off
SETLOCAL

REM Testprogramm zum Auslesen der Windows-Version und der internen Versionsnummer 
REM aus dem internen VER-Befehl
REM Diese Version laeuft NUR unter Windows 2000, 
REM fuer Windows Server 2003 muesste sie geaendert werden

FOR /f "tokens=1-5 delims= " %%i IN ('VER') DO (SET version=%%i %%j %%k& SET versionsnummer=%%m)  
ECHO Version:....... %version%
ECHO Versionsnummer: %versionsnummer%

Um dieses Programm sowohl unter Windows 2000 als auch unter Windows Server 2003 lauffähig zu haben, enstand folgende Variante:
@ECHO off
SETLOCAL

REM Testprogramm zum Auslesen der Windows-Version und der internen Versionsnummer 
REM aus dem internen VER-Befehl 
REM Diese Version laeuft sowohl unter Windows 2000 
REM als auch unter Windows Server 2003 ohne Aenderungen

FOR /f "tokens=1-5 delims=  " %%i IN ('VER') DO @FOR /f "tokens=1-2 delims=[" %%a IN ("%%i") DO SET ver_a=%%a& @FOR /f "tokens=1-2 delims= " %%k IN ("%%b") DO SET ver_b=%%l  
ECHO Version:....... %ver_a%
FOR /f "delims=]" %%k IN ("%ver_b%") DO SET ver_b=%%k  
ECHO Versionsnummer: %ver_b%

Das funktioniert alles tadellos, aber kennt jemand eine elegantere Möglichkeit (kürzer, besser, schöner), die sowohl unter Windows 2000 als auch unter Windows Server 2003 ohne Änderungen und nur mit Bordmitteln funktioniert?


Vielen Dank für Eure Mühe

Herzliche Grüße
Ruebezahl

Content-ID: 45667

Url: https://administrator.de/contentid/45667

Ausgedruckt am: 20.11.2024 um 13:11 Uhr

gemini
gemini 29.11.2006 um 20:21:51 Uhr
Goto Top
Hallo Ruebezahl,

ein VBScript, das lt. Microsoft auch auf Win98 läuft
http://www.microsoft.com/technet/scriptcenter/scripts/os/version/ostveb ...

HTH,
gemini
miniversum
miniversum 29.11.2006 um 22:00:04 Uhr
Goto Top
Vielleicht so (ungetestet)?

@echo off
SETLOCAL

REM Testprogramm zum Auslesen der Windows-Version und der internen Versionsnummer
REM aus dem internen VER-Befehl
REM Diese Version laeuft NUR unter Windows 2000,
REM fuer Windows Server 2003 muesste sie geaendert werden

FOR /f "tokens=1,2 delims=" %%i IN ('ver') DO (SET version=%%i & SET versionsnummer=%%j)
ECHO Version:....... %version%
ECHO Versionsnummer: %versionsnummer:~8%


miniversum
Biber
Biber 30.11.2006 um 06:58:53 Uhr
Goto Top
Moin Rübe,

teste mal diese Zeile am CMD-Prompt und bau sie ggf. ein (hab sie nicht unter W2003S getestet):
>FOR /f "tokens=1,2 delims=" %i in ('ver') do @for /f "tokens=2" %a in ("%j") do @echo set "Vers_a=%i" ^& set "Vers_b=%a"  
set "Vers_a=Microsoft Windows XP " & set "Vers_b=5.1.2600"  
[Beim Einbauen in den Batch natürlich das "Echo" und das Caret vor dem "&" wieder raus und "%%i" statt "%i" ..etc. ]

Sonst stell doch bitte mal die relevanten VER-Rückgaben hier ins Forum, dann ist es einfacher.

Und irgendwo in diesem Forum gab es auch mal ein kleines Tut "GetOSVersion - Betriebssystemversion ermitteln" oder so ähnlich. ->Forumssuche.

Gruß
Biber
Ruebezahl
Ruebezahl 30.11.2006 um 14:41:16 Uhr
Goto Top
Liebe Leute,


herzlichen Dank an alle für ihre Mühe, für miniversums Idee und auch für geminis Tipp, mal über den Batch-Tellerand zu schauen, ob es da nicht was in vbs gibt.

Die Idee von Biber funktioniert einwandfrei, sowohl unter Windows 2000 und auch unter Windows Server 2003 ohne jede Änderung.
Außerdem ist die Lösung soooo herrlich einfach... ich bin begeistert!


Nochmals vielen Dank an alle.

Herzliche Grüße
Ruebezahl