web-dev-qa-db-fra.com

Comment déterminer si mon système est Windows 10 à l'aide de la ligne de commande?

Je travaille avec InstallAnywhere, un ancien programme permettant de créer des installateurs. Je souhaite installer un fichier particulier uniquement dans le cas de Windows XP et de Windows Vista.

En raison des limitations d'InstallAnywhere, cela n'est pas possible. Je ne peux décider de supprimer le fichier qu'une fois celui-ci déjà installé, en fonction d'une règle.

Dans le cadre de cette règle, je peux vérifier la plate-forme sur laquelle j'exécute, ce qui me permet de rechercher Windows XP, Windows Vista, Windows 7, etc., mais pas Windows 10. Je ne peux pas dire "Effectuez cette opération. action lorsque le système n’est pas XP ou Vista ", je dois donc dire" Effectuez cette action sur toutes les plates-formes qui ne sont pas XP ou Vista ".

Cependant, je peux lancer des commandes de ligne de commande et récupérer le résultat. Voici donc ma question: existe-t-il une commande que je peux utiliser pour déterminer si je travaille sur un système Windows 10?

32
Dominique

Existe-t-il une commande permettant de déterminer si je travaille sur un système Windows 10?

Vous pouvez utiliser wmic.

La commande suivante renverra la version Windows.

wmic os get Caption | findstr /v Caption

Exemple de sortie:

F:\test>wmic os get Caption | findstr /v Caption
Microsoft Windows 7 Home Premium

Si vous souhaitez un peu plus d'informations, vous pouvez utiliser le fichier de commandes suivant (GetOS.cmd), qui sera récupéré et affiché:

  • Version du système d'exploitation
  • Version majeure du Service Pack
  • Architecture (64 ou 32 bits)
@echo off
setlocal
setlocal enabledelayedexpansion
set _os=
set _sp=
rem use findstr to strip blank lines from wmic output
rem get OS
for /f "usebackq skip=1 tokens=3" %%i in (`wmic os get caption ^| findstr /r /v "^$"`) do (
  set "_os=%%i"
  )
rem get Service Pack
for /f "usebackq skip=1 tokens=*" %%i in (`wmic os get ServicePackMajorVersion ^| findstr /r /v "^$"`) do (
  set "_sp=%%i"
  )
rem get Architecture
for /f "usebackq skip=1 tokens=*" %%i in (`wmic OS get OSArchitecture ^| findstr /r /v "^$"`) do (
  set "_bits=%%i"
  )
echo Operating System Version: %_os%
echo Service Pack Major Version: %_sp%
echo Architecture: %_bits%
endlocal

La version du système d'exploitation est stockée dans %_os, la version majeure du Service Pack est stockée dans %_sp% et l'architecture est stockée dans %_bits%.

Remarques:

  • Pas complètement testé car je n'ai pas toutes les combinaisons de système d'exploitation et de Service Pack pour le tester.

  • La commande for récupère uniquement la 3ème partie (jeton) du système d'exploitation. Cela fonctionnera pour les versions de bureau (si vous voulez distinguer Server 2008 des autres versions, vous devrez trouver une autre solution).

  • %_os sera défini sur l'une des valeurs suivantes: Server, Vista, 7, 8, 8.1 ou 10.

Exemple de sortie:

F:\test>GetOS
Operating System Version: 7
Service Pack Major Version: 1
Architecture: 64-bit

F:\test>

Lectures complémentaires

  • Index A-Z de la ligne de commande Windows CMD - Une excellente référence pour tout ce qui concerne la ligne de commande Windows.
  • findstr - Recherche de chaînes dans les fichiers.
  • pour/f - Commande en boucle contre les résultats d'une autre commande.
  • if - Exécuter une commande de manière conditionnelle.
  • wmic - Commande d'instrumentation de gestion Windows.
54
DavidPostill

Je ne peux pas croire cette commande longue et sans ver

C:\>ver

Microsoft Windows [Version 10.0.10586]

C:\>

Cela fonctionne dans les redirections afin que vous puissiez faire

ver | find "Version 10."

Mais vous devriez normalement écrire "pour cette version et toutes les versions futures" afin de mieux énumérer les versions précédentes.

36
Joshua

information système

obtient de nombreuses informations utiles comme Système d'exploitation, Type de système (32/64 bits) et ainsi de suite:

enter image description here

18
duDE

Je n'ai aucune expérience d'InstallAnywhere, mais il existe deux options pour voir quel système d'exploitation est installé à l'aide d'une ligne de commande.

  1. Utiliser Cmd

    systeminfo.exe
    

    En utilisant la commande systeminfo.exe, vous pouvez voir le résultat de sous le champ OS Name. Cela peut vous donner plus d'informations que vous avez besoin.

    Pour plus d'informations sur cette commande, consultez Microsoft TechNet .

  2. Powershell

    Vous pouvez également utiliser le script Powershell suivant, qui renverra les informations exactes souhaitées.

    Get-CimInstance Win32_OperatingSystem | Select-Object  Caption | ForEach{ $_.Caption }
    
1
Tim Mahood