web-dev-qa-db-fra.com

Comment puis-je déterminer si la version actuelle de Windows est 32 bits ou 64 bits à partir de la ligne de commande?

Quelle est la ligne de commande pour savoir si le système d'exploitation exécute une version 32 bits ou Windows 64 bits?

25
Sreerag

Vous pouvez l'obtenir via WMI:

wmic OS get OSArchitecture

Exemple sur mon système:

C:\>wmic OS get OSArchitecture
OSArchitecture
32-bit
33
ZoogieZork

Ligne de commande:

systeminfo | findstr /I type:

exemple de sortie:

Type de système: PC X86

X86 indique un système 32 bits dans cet exemple.

(Le paramètre /I indique une recherche ne respectant pas la casse )

18
Windows programmer

Je ne peux pas joindre la réponse à un autre poste, donc ici. Piping le résultat de systeminfo - prend pas mal de temps et écrit sur la console, ce n’est donc pas la meilleure solution pour les fichiers de commande (scripts batch - de toute façon. Vous souhaitez les appeler B-)).

Même avec la findstr - cela ne se trouve pas dans une autre version linguistique de Windows. Sur une langue européenne centrale win7 os, il retourne également ... "à base de X86" ... sur le résultat mais quelque chose d'autre sur le "type" recherchait. Je ne suis pas sûr que cela puisse varier selon les variantes linguistiques du système d'exploitation.

La méthode "wmic" est probablement la plus fiable - elle demande directement à l'OS.

Une autre solution rapide possible consiste à examiner une variable (au moins, travailler sur win7 chez moi).

echo %PROCESSOR_ARCHITECTURE%

Ok - c’est assez long à retenir mais il est possible de se souvenir d’un set | findstr Arch.

Bien sûr, certains peuvent modifier une variable système de manière à ne pas être aussi fiable que wmic. Mais peut être utilisé rapidement.

J'espère que je pourrais aider quelqu'un.

13
RudyD

Il existe de nombreuses manières de vérifier l'architecture du processeur sous Windows:

  • Le moyen le plus rapide, le plus simple et le plus compatible de vérifier l'architecture du processeur dans au moins Windows 2000 et les versions ultérieures consiste à examiner le PROCESSOR_ARCHITECTUREvariable d’environnement :

    echo %PROCESSOR_ARCHITECTURE%

  • Toutefois, cela peut donner des résultats différents, en fonction de la manière dont l'invite de commande est ouverte. Pour éviter d’obtenir des “résultats inattendus” dus à WoW64 , vous pouvez le lire directement à partir du registre (Microsoft n’a pas fait moins que deux fautes de frappe dans la clé ):

    reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE

  • Microsoft suggère également de lire la banque d'informations sur le matériel à partir du registre:

    reg query "HKLM\Hardware\Description\System\CentralProcessor\0" /v Identifier

  • Vous pouvez également vérifier l’existence de la version x86 du répertoire Program Files (ou de la variable d’environnement qui le pointe) car elle n’existerait que sur un Système 64 bits. Contrairement à la variable PROCESSOR_ARCHITECTURE, cela ne dépend pas de la façon dont la commande Invite est exécutée puisque le répertoire existe (ou non), quelle que soit la méthode d’ouverture de l’invite:

    • ::via env-var
      if not defined ProgramFiles(x86) echo 32-bit

    • ::via file-system
      if not exist "%systemdrive%\Program Files (x86)" echo 32-bit

Ces méthodes peuvent être combinées dans un seul fichier de commandes (par exemple, cpuinfo.bat) et constituent un moyen simple et rapide de vérifier le système à partir d'une invite de commande Windows NT standard sans avoir besoin de recourir à d'autres programmes ou frameworks.

Le fichier de commandes ci-dessous a été testé sur des systèmes 32 bits et Intel 64 bits (veuillez tester sur AMD64), en donnant les résultats corrects en <1 seconde:

Test results

@echo off

echo PROCESSOR_ARCHITECTURE var:
echo %PROCESSOR_ARCHITECTURE% | find /i "x86" > nul
if %errorlevel%==0 (
    echo   32-bit
) else (
    echo   64-bit
)
echo.

echo PROCESSOR_ARCHITECTURE reg:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE | find /i "x86" > nul
if %errorlevel%==0 (
    echo   32-bit
) else (
    echo   64-bit
)
echo.

echo CentralProcessor reg:
reg query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > nul
if %errorlevel%==0 (
    echo   32-bit
) else (
    echo   64-bit
)
echo.

echo ProgramFiles(x86) var:
if not defined ProgramFiles(x86) (
    echo   32-bit
) else (
    echo   64-bit
)
echo.

echo ProgramFiles(x86) dir:
if not exist "%systemdrive%\Program Files (x86)" (
    echo   32-bit
) else (
    echo   64-bit
)
echo.
11
Synetech

Je ne pouvais pas trouver la propriété OSArchitecture (selon la réponse de phoebus). Je suggérerais donc d'utiliser la propriété SystemType dans ComputerSystem à la place.

Exécution de la commande wmic computersystem get systemtype à partir d’une invite de commande

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC
5
SPiRiTS

Ligne de commande standard: wmic OS get OSArchitecture (IIRC)

PowerShell: (gwmi win32_computersystem).SystemType

4
phoebus

si vous faites référence à Windows OS, vous pouvez utiliser vbscript avec WMI

strComputer = "."    
Set objWMIService = GetObject("winmgmts{impersonationLevel=impersonate,authenticationLevel=Pkt}!\\" & strComputer & "\root\cimv2")    
Set colSettings = objWMIService.ExecQuery("SELECT * FROM Win32_Processor")

For Each objProcessor In colSettings
Wscript.Echo "System Type: " & objProcessor.Architecture
Wscript.Echo "Processor: " & objProcessor.Description
Wscript.Echo "Address Width: "& objProcessor.AddressWidth
Next
1
user31894

Vous pouvez trouver cette information en utilisant "Informations système"

Démarrer-> Exécuter -> winmsd.exe

Sous "Résumé système"/Type de système, vous pouvez trouver la version du système d'exploitation.

X64 -> 64 bits
X86 -> 32 bits

La réponse de JohnT dans l'interface graphique;)

1
ukanth

Cliquez sur Démarrer "Exécuter, puis tapez cmd. Maintenant, vous serez en ligne de commande. Là, vous pouvez taper systeminfo puis appuyer sur entrée. Il faut quelques secondes pour obtenir toutes les informations de votre système. Vous pouvez également trouver les données du processeur.

 Processor(s):              1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
  • famille x86 signifie que votre processeur est 32 bits.
  • famille x64 signifie que votre processeur est 64 bits.

C:\Documents and Settings\mr85464> informations système

OS Name:                   Microsoft Windows XP Professional
OS Version:                5.1.2600 Service Pack 3 Build 2600
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Member Workstation
OS Build Type:             Multiprocessor Free
Product ID:                76487-640-3658033-23932
Original Install Date:     3/16/2012, 2:03:44 PM
System Up Time:            5 Days, 21 Hours, 35 Minutes, 51 Seconds
System Manufacturer:       Dell Inc.
System Model:              OptiPlex 210L
System type:               X86-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
~2992 Mhz
1

Code simple que j'ai utilisé:

:Arch
set p | findstr /i AMD64 > nul
if not errorlevel 1 goto no64
goto eof
:no64
code to execute
:eof
0
Dion