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

32

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

En raison des limitations d'InstallAnywhere, cela n'est pas possible. Je ne peux décider que de supprimer le fichier une fois qu'il est 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 je cours, ce qui me donne la possibilité 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 ni XP ni Vista ", je dois donc dire" Effectuez cette action sur toutes les plateformes autres que XP ou Vista ".

Cependant, je peux lancer des commandes en 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?

Dominique
la source
winverouvrira la boîte de dialogue À propos de Windows si elle est saisie dans cmd ou dans Démarrer. Cela fonctionnerait-il? Alternativement - stackoverflow.com/questions/1792740/…
Tetsujin
Merci pour la réponse, mais je cherche une commande de ligne de commande qui donne une réponse dans la ligne de commande. Je ne peux pas utiliser les informations de manière batch, lorsqu'un message apparaît.
Dominique
Vérifiez la version de cmd.exe, c’est la plus simple et au moins supportée depuis XP. Il y a une question à ce sujet.
KeyWeeUsr
2
google cmd versions, chaque système d'exploitation a un numéro de version différent, vous pouvez le vérifier et vous n'avez pas besoin d'un long script inutile ou d'un autre programme - ici
KeyWeeUsr
5
Il suffit de taper ver. Par exemple, sur mon système Windows 7, le message "Microsoft Windows [Version 6.1.7601]" m'indique que j'utilise Windows 7 ( numéro de version 6.1 ).
Andreas Rejbrand

Réponses:

54

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 va récupérer et afficher:

  • 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 %_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 forcommande récupère uniquement la 3ème partie (jeton) du système d'exploitation. Cela fonctionnera pour les versions de bureau (si vous souhaitez distinguer Server 2008 des autres versions, vous devrez trouver une autre solution).

  • %_ossera fixé à l' une des valeurs suivantes: Server, Vista, 7, 8, 8.1ou 10.

Exemple de sortie:

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

F:\test>

Lectures complémentaires

DavidPostill
la source
2
Après quelques essais, j'ai décidé d'utiliser la commande suivante:wmic os get Caption | findstr /V Caption
Dominique,
@ DavidPostill J'ai testé le fichier de commandes. Je pense qu'il faut un pauseavant endlocalpour donner à l'utilisateur une chance de lire le résultat avant la fermeture de la fenêtre. Est-ce que cela vous suit aussi?
Matthew
1
@ Matthew Je pense que l'on s'attend à ce qu'un autre système exécute le fichier de commandes et en capture la sortie (ou qu'il soit appelé manuellement à partir d'une fenêtre d'invite de commande existante).
TripeHound
@mathew pause n'est pas nécessaire à partir de l'invite de commande. La réponse est de montrer la technique plutôt que d’adapter tous les scénarios.
DavidPostill
1
@mathew ouvrez une invite de commande où vous avez enregistré le fichier et tapez getos
DavidPostill
35

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 pour toutes les versions futures" afin de mieux énumérer les précédentes.

Josué
la source
FYI verne fonctionne pas dans PowerShell. C'est CMDspécifique.
Keltari
3
@ Keltari Mais iex "ver"fait!
Ben N
La sortie de verpeut être un peu trompeuse. Sur la machine sur laquelle je suis assis en ce moment, il revient Microsoft Windows [Version 6.1.7601]. Mais je suis tout à fait certain qu'il fonctionne sous Windows 7, pas sous Windows 6.
Philipp,
@Philipp Oui, Windows 7 et 8 sont de véritables versions de correctifs de Vista, 6.1 et 6.2 respectivement; la version majeure bosse est strictement marketing. Je ne sais pas si les modifications apportées à Windows 10 sont suffisamment importantes pour justifier une modification majeure de la version. (Du point de vue de l' ingénierie logicielle de la ligne dure, la version majeure de tout logiciel ne doit jamais être cogné pour indiquer une rupture de compatibilité ascendante, il suit que les grandes versions majeures sont mauvais Malheureusement, le département marketing aime un grand nombre..)
Zwol
1
@Philipp - il est facile de trouver une carte du numéro de version au nom marketing, par exemple, ici
davidbak
18

information système

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

entrez la description de l'image ici

mec
la source
Oui, je recommanderais systeminfoaussi. Comme vous pouvez le voir sur l'image ci-dessus, votre système d'exploitation sera affiché, ainsi que d'autres informations dont vous pourriez avoir besoin.
Matthew
3
Merci pour la réponse rapide. systeminfodonne effectivement les informations que je cherche (d’où le vote positif), mais cela prend un certain temps (sur mon PC, cela prend plus de 15 secondes). J'ai donc opté pour la wmicsolution trouvée dans la réponse suivante.
Dominique
1
C'est ce que je demande aux gens de courir quand j'ai besoin de savoir quelle version / version est utilisée:cmd /c systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
Andrew Savinykh
1
La sortie de systeminfo dépend de la langue, donc inutile si vous voulez l'exécuter à plus grande échelle
Stephan
1

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.

    Vous trouverez plus d'informations sur cette commande dans 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 }
    
Tim Mahood
la source