Si vous utilisez des scripts batchs au sein de votre réseau de PC, il peut être utile suivant la version de Windows d'agir différemment. En effet, une fonction système qui fonctionne sur Windows XP peut ne pas fonctionner sur Windows 98 (et vice-versa).
Aussi étonnant que cela puisse paraître il n'existe pas de variable d'environnement permettant de récupérer cette information sur la version ! Seule la variable %OS% est définie mais ne permet pas différencier les différents OS bâtis sur les noyaux NT (tels que 2003, 2000, XP), de plus elle n'est pas présente sur tous les OS Microsoft.
Je vous propose donc une solution que j'ai du mettre en place dans le cadre d'un script qui, je l'espère, vous servira à votre tour.
La liste des versions de Windows NT est disponible sur Wikipedia (version list).
Récupérer la version de l'OS dans une variable :
@echo off cls color 5F REM Detection de l'OS (source blogmotion.fr) ver | find /i "version 10.0." > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows 10 Insider Preview ver | find /i "version 10.0.100" > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows 10 Technical Preview ver | find /i "version 10.0.10586" > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows 10 Threshold 2 ver | find /i "version 10.0.10240" > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows 10 Threshold 1 ver | find /i "version 6.4." > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows 10 Technical Preview ver | find /i "version 6.3." > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows 8.1-2012R2 ver | find /i "version 6.2." > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows 8-2012 ver | find /i "version 6.1." > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows 7-2008R2 ver | find /i "version 6.0." > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows Vista-2008 ver | find /i "version 5.1." > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows XP ver | find /i "version 5.2." > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows 2003 ver | find /i "Windows 2000" > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows 2000 ver | find /i "Windows NT" > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows NT ver | find /i ">Windows ME" > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows ME ver | find /i "Windows 98" > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows 98 ver | find /i "Windows 95" > nul && if %errorlevel%==0 set $VERSIONWINDOWS=Windows 95 echo OS : %$VERSIONWINDOWS% echo.(source du script: https://blogmotion.fr) echo.
Voila le résultat du script (vous devinerez à partir de quel OS je l'ai lancé) :