von postNils Kaczenski post9. Juli 2004, 15:25 Uhr post http://faq-o-matic.net/?p=623
post Kategorie: Scripting, Windows

Um verschiedene Windows-Versionen beispielsweise innerhalb eines Loginscripts unterscheiden zu können, kann man sich des Befehls "ver" bedienen. Da es sich um einen Konsolenbefehl handelt, muss seine Ausgabe allerdings geparst werden.

Eine Erweiterung des Verfahrens aus dem Logonscript-Artikel sieht so aus:

@echo off
rem Die folgenden Funktionen dienen dazu, verschiedene
rem Windows-Versionen zu unterscheiden

rem Alle Nicht-NTs:
if not "%os%"=="Windows_NT" goto W9x

rem Windows NT4:
ver|find "NT">nul
if not errorlevel 1 goto NT

rem Windows 2000:
ver|find "2000">nul
if not errorlevel 1 goto W2000

rem Windows XP:
ver|find "XP">nul
if not errorlevel 1 goto WXP

rem Windows 2003:
ver|find "5.2.">nul
if not errorlevel 1 goto W2003

:W9x
echo Hier ist Windows 9x/Me
goto ende

:NT
echo Hier ist Windows NT4
goto ende

:W2000
echo Hier ist Windows 2000
goto ende

:WXP
echo Hier ist Windows XP
goto ende

:W2003
echo Hier ist Windows 2003
goto ende

:ende

Eine etwas elegantere Variante davon hat mir Michael Boettjer (news at Nachname dot org) geschickt:

@echo off

set version=

for /f "tokens=1,2,3* delims= " %%i in ('ver') do set version=%%i %%j %%k
if "%version%" == "Microsoft Windows [Version" (goto doit;)
if "%version%" == "Microsoft Windows 2000" (goto doit;)
if "%version%" == "Windows NT Version" (goto doit;)
if "%version%" == "Microsoft Windows XP" (goto doit;)
echo %version%

echo Das Betriebssystem ist nicht Windows NT, Windows 2000, XP oder 2003.
pause
exit 0

:doit
....

Verwandte Beiträge:

  1. Übersichtlichere Schreibweise bei if-Anweisungen
    Oft steht in einem Batch bei nach einer Bedingung, bei deren Zutreffen mehrere Zeilen Code ausgeführt werden müssen, etwas in...
  2. Wie führe ich eine Aktion nur aus, wenn der Ziel-Host erreichbar ist?
    Oft soll eine bestimmte Aktion nur ausgeführt werden, wenn der Ziel-Host auch erreichbar ist. Das ist dann problematisch, wenn es...
  3. Schema-Versionen vergleichen
    In dem kürzlich hier erschienenen Artikel "Schema-Erweiterungen auffinden" habe ich einen manuellen Weg beschrieben, mit dem sich Erweiterungen im Schema...
  4. Exchange 2007: Installation auf Windows Server 2008 vorbereiten
    Um Exchange Server 2007 auf Windows Server 2008 zu installieren, ist ein Installationsmedium mit (mindestens) dem integrierten Service Pack...
  5. Bestimmte Verknüpfungen im Benutzerprofil löschen
    Nach einer Dateiserver-Migration oder nach einem Anwendungs-Update sollen oft veraltete Verknüpfungen im Startmenü oder auf dem Desktop von Benutzern entfernt...