Come posso determinare se la versione corrente di Windows è a 32 o 64 bit dalla riga di comando? [duplicare]


26

Qual è la riga di comando per scoprire se il sistema operativo esegue una versione a 32 bit o 64 bit di Windows?


In che lingua ?!
Alix Axel,

@AlixAxel, bene hanno detto da riga di comando , quindi presumibilmente, se non altro, Batch.
Synetech,

Risposte:


33

Puoi ottenerlo tramite WMI:

wmic OS get OSArchitecture

Esempio sul mio sistema:

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

Mi piace questa risposta (devo imparare un po 'di console WMI :)), ma devo darla a "systeminfo" per i tasti. ;)
Ƭᴇcʜιᴇ007,

XP?
Synetech

18

Riga di comando:

systeminfo | findstr /I type:

esempio di output:

Tipo di sistema: PC basato su X86

X86 indica un sistema a 32 bit in questo esempio.

(il /I parametro indica la ricerca senza distinzione tra maiuscole e minuscole )


Ti ho dato un punto per i tasti, e poi hai allungato il tempo. hehe :)
Ƭᴇcʜιᴇ007,

Non è la mia risposta: P
John T

2
Ma "PC basato su X86" è lo stesso di OSArchitecture a 32 bit? È possibile eseguire Win XP a 32 bit su un processore x64.
Michael Caron,

fai attenzione se la tua lingua del sistema operativo è il tedesco (o forse altro che l'inglese)! Devo passare a systeminfo | findstr /I typ:come l'intera voce èSystemtyp: x64-based PC
CeOnSql

systeminfo | findstr /C:"System Type"recupera anche le stesse informazioni, ma immagino che il testo più lungo sia meno preferito.
Abhijeet

13

Non posso allegare la risposta a un altro post, quindi qui. Il piping del risultato di systeminfo- sta impiegando abbastanza tempo e scrive sulla console, quindi non è la soluzione migliore per i file di comando (script batch - comunque ti piace chiamarli B-)).

Anche con il findstr- non lo trova su altre lingue di Windows. Su una lingua dell'Europa centrale win7 os restituisce anche ... "Basato su X86" ... sul risultato ma qualcosa di diverso sul "tipo" stava cercando. Non sono sicuro che possa variare su altre varianti linguistiche del sistema operativo.

Probabilmente il metodo "wmic" è il più affidabile - chiede direttamente il sistema operativo.

Un'altra possibile soluzione rapida può essere quella di esaminare una variabile (almeno lavorando su win7 presso di me).

echo %PROCESSOR_ARCHITECTURE%

Ok - è abbastanza lungo da ricordare ma è possibile set | findstr ARCHricordare un.

Certo, alcuni possono modificare una variabile di sistema in modo che non sia affidabile wmic. Ma può essere usato rapidamente.

Spero di poter aiutare qualcuno.


Non ero sicuro che il comando echo avrebbe funzionato sulla mia scatola di XP perché non avevo mai visto prima questa variabile d'ambiente (forse perché non l'ho mai cercata), ma lo fa. +1 per una soluzione semplice.
music2myear,

11

Esistono numerosi modi per verificare l'architettura del processore in Windows:

  • Il modo più veloce, più semplice e più compatibile per controllare l'architettura del processore in almeno Windows 2000 e versioni successive è esaminare la PROCESSOR_ARCHITECTURE variabile di ambiente :

    echo %PROCESSOR_ARCHITECTURE%

  • Tuttavia, ciò può dare risultati diversi, a seconda del modo in cui viene aperto il prompt dei comandi. Per evitare di ottenere "risultati imprevisti" dovuti a WoW64 , è possibile leggerlo direttamente dal registro (Microsoft ha effettuato non meno di due errori di battitura nella chiave ):

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

  • Microsoft suggerisce inoltre di leggere l'archivio informazioni hardware dal registro:

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

  • Puoi anche verificare l'esistenza della versione x86 della Program Filesdirectory (o della variabile d'ambiente che la punta) poiché esisterebbe solo su un sistema a 64 bit. A differenza della PROCESSOR_ARCHITECTUREvariabile, ciò non dipende dal modo in cui viene eseguito il prompt dei comandi poiché la directory esiste (o meno) indipendentemente da come viene aperto il prompt:

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

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

Questi metodi possono essere combinati in un singolo file batch (ad esempio, cpuinfo.bat) e forniscono un modo semplice e veloce per controllare il sistema da un prompt dei comandi di Windows NT standard senza dover ricorrere all'esecuzione di altri programmi o framework.

Il file batch di seguito è stato testato su sistemi a 32 bit e Intel a 64 bit (eseguire il test su AMD64), fornendo risultati corretti in <1 secondo:

Risultati del test

@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.

5

Non sono riuscito a trovare la OSArchitectureproprietà (secondo la risposta di phoebus), quindi suggerirei invece di utilizzare la SystemTypeproprietà in ComputerSystem.

Esegue il comando wmic computersystem get systemtypeda un prompt dei comandi

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC

4

Riga di comando regolare: wmic OS get OSArchitecture (IIRC)

PowerShell: (gwmi win32_computersystem).SystemType


1
Arrivo Invalid Queryin XP.
Synetech,

1

se ti riferisci al sistema operativo Windows, puoi usare vbscript con 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

È possibile trovare tali informazioni utilizzando "Informazioni di sistema"

Start-> Esegui -> winmsd.exe

In "Riepilogo sistema" / Tipo di sistema è possibile trovare la versione del sistema operativo

X64 -> 64 Bit
X86 -> 32 Bit

La risposta di JohnT nella GUI;)


1

Vai su Start »Esegui e quindi digita cmd. Ora sarai nel prompt dei comandi. Lì puoi digitare systeminfoe quindi premere invio. Bastano pochi secondi per ottenere tutte le informazioni di sistema. Puoi trovare anche i dati del processore.

 Processor(s):              1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
  • Famiglia x86 significa che il tuo processore è a 32 bit.
  • Famiglia x64 significa che il tuo processore è a 64 bit.

C: \ Documents and Settings \ mr85464> systeminfo

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

2
Bastano pochi secondi davvero! E eseguirlo di nuovo non aiuta perché non memorizza nella cache le informazioni. Inoltre, gli aggiornamenti di Windows fanno scorrere rapidamente fuori dallo schermo la parte relativa all'architettura, quindi a meno che non si disponga di un buffer abbastanza grande, è necessario reindirizzarlo more.
Synetech,

0

Codice semplice che ho usato:

:arch
set p | findstr /i AMD64 > nul
if not errorlevel 1 goto no64
goto eof
:no64
code to execute
:eof
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.