it-swarm-eu.dev

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

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

25
Sreerag

È possibile ottenere questo tramite WMI:

wmic OS get OSArchitecture

Esempio sul mio sistema:

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

Riga di comando:

systeminfo | findstr /I type:

esempio di output:

Tipo di sistema: PC basato su X86

In questo esempio, X86 indica un sistema a 32 bit.

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

18

Non posso allegare la risposta a un altro post così qui. Piping il risultato di systeminfo - sta prendendo una quantità abbastanza buona nel tempo e scrive sulla console, quindi non è la soluzione migliore per i file di comando (script batch - comunque, ti piace chiamarli B-)).

Anche con findstr - non lo trova su altre versioni linguistiche di windows. In un linguaggio win7 centrale europeo restituisce anche ... "basato su X86" ... sul risultato ma su qualcos'altro che il "tipo" cercava. 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 su di me).

echo %PROCESSOR_ARCHITECTURE%

Ok, è piuttosto lungo ricordare, ma è possibile ricordare un set | findstr Arch.

Certo - alcuni possono modificare una variabile di sistema quindi non così affidabile di wmic. Ma può essere usato rapidamente.

Spero di poter aiutare qualcuno.

13
RudyD

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

  • Il modo più veloce, più semplice e più compatibile per controllare l'architettura del processore in almeno Windows 2000 e su è esaminare il PROCESSOR_ARCHITECTUREvariabile di ambiente :

    echo %PROCESSOR_ARCHITECTURE%

  • Tuttavia, questo può dare risultati diversi, a seconda del modo in cui viene aperto il prompt dei comandi. Per evitare di ottenere "risultati inaspettati" a causa di WoW64 , puoi leggerlo direttamente dal registro (Microsoft ha ottenuto 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 dell'hardware dal registro:

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

  • Puoi anche verificare l'esistenza della versione x86 della directory Program Files (o della variabile di ambiente che punta ad essa) poiché esisterebbe solo su un Sistema a 64 bit. A differenza della variabile PROCESSOR_ARCHITECTURE, questo non dipende dal modo in cui il comando Prompt viene eseguito 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 rapido e agevole per controllare il sistema da un prompt di comando standard di Windows NT senza dover ricorrere a altri programmi o framework.

Il file batch sottostante è stato testato su sistemi a 32 bit e Intel a 64 bit (si prega di testare su AMD64), dando risultati corretti in <1 secondo:

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

Non sono riuscito a trovare la proprietà OSArchitecture (come per la risposta di phoebus), quindi suggerirei di utilizzare invece la proprietà SystemType in ComputerSystem.

Fornisce il comando wmic computersystem get systemtype da un comando Prompt

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC
5
SPiRiTS

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

PowerShell: (gwmi win32_computersystem).SystemType

4
phoebus

se ti riferisci a Windows OS, 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
user31894

È possibile trovare tali informazioni utilizzando "Informazioni di sistema"

Start-> Esegui -> winmsd.exe

Sotto "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
ukanth

Vai su Start "Esegui, quindi digita cmd. Ora sarai in comando Prompt. Qui puoi digitare systeminfo e quindi premere invio. Bastano pochi secondi per ottenere tutte le informazioni del tuo sistema. Puoi anche trovare i dati del processore.

 Processor(s):              1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
  • la famiglia x86 significa che il processore è a 32 bit.
  • x64 Famiglia 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
1

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
0
Dion