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


Dupliqués possibles:
Comment savoir si un ordinateur a un processeur ou un système d'exploitation 64 bits
Détecter Windows Server version 32/64 bits dans l'interface de ligne de commande
Version du système d'exploitation: 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 savoir le bitness du système d'exploitation, pas le matériel.

Cette question s'applique strictement à ligne de commande uniquement, Je ne veux pas de solutions d'interface graphique.


68
2017-08-11 17:44


origine


Hmm, c'est triste que systeminfo ne liste pas cela. - Tom Wijsman
@MaQleod - Personnellement, je soutiens que, simplement parce que votre réponse convient aux deux, les questions ne sont pas des doublons exacts, car celui-ci est un scénario beaucoup plus spécifique. Je ne sais pas si votre réponse correspond parfaitement à «ligne de commande uniquement», car elle nécessite un utilitaire supplémentaire, mais si c'était moi, je la posterais comme une réponse ici. - Shinrai
@MaQleod Personnellement, je ne l'appellerais pas un doublon car il demande une solution spécifique à une ligne de commande uniquement. La question que vous avez liée a une réponse acceptée pour une solution graphique. - Ben Richards
Merci pour les réponses edit +. J'ai choisi la réponse qui convenait le mieux à ma situation. - Negative
J'ai fini par trouver ce qu'est une copie exacte de ceci. (La publication liée fait uniquement référence à la ligne de commande uniquement et fournit même ma solution exacte.) - Shinrai


Réponses:


À partir d'une invite de commande élevée, tapez wmic os get osarchitecture. La sortie est assez évidente, je pense - elle retournera soit "32-bit" soit "64-bit".


105
2017-08-11 17:53



Cela ressemble à la solution que j'utiliserais ... Maintenant que je le sais. - James T Snell
Ou faire la même chose dans Powershell si vous êtes sur une machine W7 ou un autre OS Windows sur lequel vous avez installé PS: (gwmi win32_OperatingSystem) .OSArchitecture - EBGreen
Ne fonctionne pas ici sous Windows XP. Retourne une erreur: requête non valide. - user606723
Caveat: doit être un administrateur pour exécuter WMIC. - Breakthrough
@ user606723 - Je n'ai pas d'installation sous Windows à tester, mais je ne pensais pas que les hooks WMI avaient beaucoup changé. OP n’a pas spécifié de système d’exploitation, pour être juste, mais je devrai le tester moi-même. - Shinrai


Le programme de la console systeminfo le montrera. Vous voudrez chercher la ligne "Type de système:". Pour les systèmes 32 bits, il s'agira de "PC x86". Pour les systèmes 64 bits, il s'agira de "PC 64 bits".

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 le répéter:

echo %PROCESSOR_ARCHITECTURE%

David Wang chez MSDN Blogs se développe sur ce sujet HOWTO: Détecter les erreurs de traitement


50
2017-08-11 17:57



Cela ne montre-t-il pas le type PROCESSOR, pas le type de système d'exploitation installé? - Shinrai
Je ne le pense pas, car le mode 32 bits et le mode 64 bits sont des modes différents du processeur. Un processeur peut être en mode 32 bits, et je ne pense pas que le système d'exploitation le sache 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 compatible 64 bits, je lui demanderai de vérifier pour moi. - Ben Richards
Ouais, je ne suis pas sûr (d'où la réponse provisoire) et malheureusement, je n'ai rien de pratique pour vérifier moi-même. Je pensais que c'était juste une chaîne signalée par un processeur donné, quel que soit son fonctionnement. Il serait utile de savoir avec certitude. - Shinrai
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 ne pas travailler dans l'autre sens. - bobbymcr
vote comme echo% PROCESSOR_ARCHITECTURE%  fonctionne même dans le shell de commandes du serveur SQL. wmic os obtenir osarchitecture Parfois, cela ne fonctionne pas dans le shell de commandes du serveur SQL - Durai Amuthan.H


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


8
2017-08-11 17:54



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


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

Exemple de lecture:

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

Par requête, voici la source, compilée à l'aide de l'option CLI, écrite 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

8
2017-08-11 18:21



Je serais bien si le fichier était fourni avec la source. Il est plutôt déconcertant de télécharger un petit exe, posté sur mediafire, et de le lancer. - artifex
@ artifex, source ajoutée. - MaQleod
ce pourrait être faux U_U Jocking :) - Pitto
Il serait bon de savoir ce que API autoit utilise en interne. - user606723


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

% SYSTEMROOT% \ Program Files (x86)

ou quoi que ce soit appelé?


3
2017-08-11 17:51



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