Comment déterminer si mon Windows est 32 bits ou 64 bits à l'aide d'une commande? [dupliquer]

79

Doublons possibles:
Comment savoir si un ordinateur dispose d'un processeur ou d'un système d'exploitation 64 bits
Détectez Windows Server version 32/64 bits dans la version du système d'exploitation CLI
: 32 bits ou 64 bits?

Comment déterminer si mon système Windows est 32 bits ou 64 bits à partir de la ligne de commande?

Je veux connaître le nombre de bits du système d'exploitation, pas le matériel.

Cette question concerne uniquement la ligne de commande , je ne souhaite aucune solution graphique.

Négatif
la source
1
Hmm, c'est triste de systeminfone pas énumérer cela.
Tamara Wijsman
@MaQleod - Personnellement, je dirais que, tout simplement parce que votre réponse convient aux deux questions, les questions ne sont pas des doublons exacts, car celle-ci est un scénario beaucoup plus spécifique. Je ne sais pas si votre réponse correspond tout à fait à la ligne de commande uniquement, car elle nécessite un utilitaire supplémentaire, mais si c'était moi, je la posterais comme réponse ici.
Shinrai
@ MaQleod Personnellement, je n'appellerais pas cela un doublon, car il demande une solution uniquement en ligne de commande. La question que vous avez liée a une réponse acceptée pour une solution graphique.
Ben Richards
1
Merci pour les modifications + réponses. J'ai choisi la réponse qui convient le mieux à ma situation.
Négatif
J'ai fini par trouver ce qui est une copie exacte de cela. (Le post lié fait uniquement référence à la ligne de commande et fournit même ma solution exacte.)
Shinrai

Réponses:

123

Dans une invite de commande avec privilèges élevés, tapez wmic os get osarchitecture. Je pense que la sortie est assez évidente: elle renverra soit "32 bits", soit "64 bits".

Shinrai
la source
Cela ressemble à la solution que j'utiliserais ... Maintenant que j'en ai entendu parler.
James T Snell
2
Ou faire la même chose en Powershell si vous êtes sur une machine W7 ou d'une autre OS Windows où vous avez installé PS: (gwmi WIN32_OperatingSystem) .OSArchitecture
EBGreen
2
Ne fonctionne pas ici sous Windows XP. Erreur de retour: requête non valide.
user606723
1
Mise en garde : doit être un administrateur pour exécuter WMIC.
Percée
@ user606723 - Je ne dispose pas d'une installation XP sur laquelle effectuer des tests, mais je ne pensais pas que les points d'ancrage WMI avaient tellement changé. OP n'a pas spécifié de système d'exploitation, pour être juste, mais je devrai le tester moi-même.
Shinrai
56

Le programme de la console systeminfo le montrera. Vous voudrez rechercher la ligne "Type de système:". Pour les systèmes 32 bits, il sera écrit "PC à base de x86". Pour les systèmes à 64 bits, il sera écrit "PC à base de x64".

Ou, pour une méthode plus rapide, vous pouvez simplement vérifier la variable d’environnement PROCESSOR_ARCHITECTURE. Les systèmes 64 bits diront que les systèmes AMD64 et 32 ​​bits doivent dire «x86». Pour vérifier cela, vous pouvez simplement y faire écho:

echo %PROCESSOR_ARCHITECTURE%

David Wang sur les blogs MSDN développe ce HOWTO: Détecter les bits de processus

Ben Richards
la source
Cela ne montre-t-il pas le type PROCESSOR, pas le type de système d'exploitation installé?
Shinrai
Je ne pense pas, car le mode 32 bits et le mode 64 bits sont des modes différents dans lesquels le processeur peut se trouver. Un processeur peut être en mode 32 bits et je ne pense pas que le système d'exploitation sache de manière inhérente s'il le pourrait. transition en mode 64 bits. Cependant, c'est un bon point, c'est quelque chose qui devrait être testé. Comme je sais que mon frère a une installation Win 7 32 bits sur un processeur 64 bits, je lui demanderai de vérifier pour moi.
Ben Richards
Oui, je ne suis pas sûr (d'où la réponse provisoire) et malheureusement, je n'ai rien de pratique à vérifier sur moi-même. Je pensais que c'était simplement une chaîne rapportée par un processeur donné, quelle que soit sa façon de fonctionner. Il serait utile de savoir à coup sûr.
Shinrai
4
Si vous exécutez un système d'exploitation 32 bits sur un système 64 bits,% PROCESSOR_ARCHITECTURE% sera toujours "x86". Dans la plupart des cas, un système d'exploitation 64 bits peut exécuter des programmes 32 bits, mais cela ne fonctionne pas dans l'autre sens.
Bobmob
2
up vote comme echo% PROCESSOR_ARCHITECTURE% fonctionne même dans l' interpréteur de commandes du serveur sql too.where comme os wmic obtenir osarchitecture quelque temps de ne fonctionne pas dans l' interpréteur de commandes du serveur sql
Durai Amuthan.H
8

Vous pouvez vérifier si la %PROGRAMFILES(x86)%variable d'environnement est déclarée. Sur les systèmes 32 bits, il ne sera pas défini (le %PROGRAMFILES%sera seulement ). C’est également plus sûr de simplement vérifier si le répertoire Program Files (x86) existe, puisqu’il peut être déplacé (ou même supprimé).

Percée
la source
Une meilleure solution de contournement que de rechercher le dossier, oui. (Je n'aime pas utiliser une solution de contournement, mais si vous allez à cette question est celle à utiliser.)
Shinrai
Très bonne prise ... J'ai un lot qui vérifie le dossier, mais ce serait certainement plus élégant.
WernerCD
1
Vous pouvez également comparer les variables %PROGRAMFILES(x86)%et %PROGRAMFILES%pour voir si la cmd a été démarrée en mode 32 bits ou 64 bits. (Parce que sur une fenêtre 64 bits, vous pouvez toujours exécuter une cmd 32 bits.) Exemple: IF %PROGRAMFILES(x86)%== %PROGRAMFILES%=> 32 cmd (exécuté sur une fenêtre 64 bits .....) IF %PROGRAMFILES(x86)%<> %PROGRAMFILES%=> 64 bits.
Sam Hasler
8

J'ai écrit une simple application en ligne de commande qui vous indiquera si votre processeur et votre système d'exploitation sont en 64 bits ou en 32 bits.

Exemple de lecture:

C:\bitchecker
The CPU is 64-bit and the OS is 32-bit

Par requête, voici le source, compilé à l'aide de l'option CLI, écrit en AutoIt.

If @CPUARCH = "x86" Then
    $CPUARCH = "32-bit"
Else
    $CPUARCH = "64-bit"
EndIf

If @OSARCH = "x86" Then
    $OSARCH = "32-bit"
Else
    $OSARCH = "64-bit"
EndIf

ConsoleWrite("The CPU is " & $CPUARCH & " and the OS is " & $OSARCH)

Et voici un exemple si vous voulez des commutateurs pour CPU (-c) et OS (-o):

Dim $CPUARCH, $OSARCH

If @CPUARCH = "x86" Then
    $CPUARCH = "32-bit"
Else
    $CPUARCH = "64-bit"
EndIf

If @OSARCH = "x86" Then
    $OSARCH = "32-bit"
Else
    $OSARCH = "64-bit"
EndIf

If $CmdLine[0] = 0 Then
    ConsoleWrite("The CPU is " & $CPUARCH & " and the OS is " & $OSARCH)
Else
    Select
        Case $CmdLine[1] = "-c"
            ConsoleWrite($CPUARCH)
        Case $CmdLine[1] = "-o"
            ConsoleWrite($OSARCH)
        Case Else
            ConsoleWrite("The CPU is " & $CPUARCH & " and the OS is " & $OSARCH)
    EndSelect
EndIf
MaQleod
la source
1
Je serais bien si le fichier venait avec la source. C'est assez énervant de télécharger un petit exe posté sur mediafire et de l'exécuter.
artifex
1
@artifex, source ajoutée.
MaQleod
ça pourrait être faux U_U Jocking :)
Pitto Le
Il serait bon de savoir quelle API utilise autoit en interne ..
user606723 Le
3

Et si vous vérifiiez simplement la présence de

% SYSTEMROOT% \ Program Files (x86)

ou peu importe comment ça s'appelle?

James T Snell
la source
Pas une super solution, mais peut-être des solutions rapides et sales pour votre problème particulier?
James T Snell
Vous m'avez battu à cette solution, +1. Une forme courte pourrait être dir \Program *.
Tamara Wijsman