Come posso determinare se la versione corrente di Windows è a 32 bit o a 64 bit dalla riga di comando?
Qual è la linea di comando per scoprire se il sistema operativo sta eseguendo una versione a 32 bit o a 64 bit di Windows?
Qual è la linea di comando per scoprire se il sistema operativo sta eseguendo una versione a 32 bit o a 64 bit di Windows?
Potete ottenere questo tramite WMI:
wmic OS get OSArchitecture
Esempio sul mio sistema:
C:\>wmic OS get OSArchitecture
OSArchitecture
32-bit
Non posso allegare la risposta a un altro post quindi qui. Piping il risultato di systeminfo
- sta prendendo una quantità abbastanza buona nel tempo e scrive alla console così non è la migliore soluzione per i file di comando (script batch - in qualsiasi modo vi piace chiamarli B-) ).
Anche con lo findstr
- non lo trova su altre versioni linguistiche di Windows. Su un os win7 di lingua europea centrale restituisce anche … “X86-based”… sul risultato ma qualcosa di diverso da quello che il “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 al sistema operativo.
Altra possibile soluzione rapida può essere quella di esaminare una variabile (almeno funziona su win7 da me).
echo %PROCESSOR_ARCHITECTURE%
Ok - è abbastanza lungo da ricordare ma è possibile che un set | findstr ARCH
possa essere ricordato.
Certo - alcuni possono modificare una variabile di sistema quindi non così affidabile di wmic
. Ma può essere usato rapidamente.
Spero di poter aiutare qualcuno.
Ci sono numerosi modi per controllare l'architettura del processore sotto Windows:
Il modo più veloce, facile e compatibile per controllare l'architettura del processore in almeno Windows 2000 e superiori è quello di esaminare la variabile d'ambiente PROCESSOR_ARCHITECTURE
:
Tuttavia, questo può dare risultati diversi, a seconda del modo in cui il prompt dei comandi viene aperto. Per evitare di ottenere “risultati inaspettati” a causa di WoW64 , si può leggere direttamente dal registro (Microsoft ha fatto non meno di due errori di battitura nella chiave ):
Microsoft suggerisce anche di leggere il negozio di informazioni hardware dal registro:
Si può anche controllare l'esistenza della versione x86 della directory Program Files
(o la variabile d'ambiente che punta ad essa) poiché esisterebbe solo su un sistema a 64 bit. A differenza della variabile PROCESSOR_ARCHITECTURE
, questa non dipende dal modo in cui il prompt dei comandi viene eseguito, poiché la directory esiste (o meno) indipendentemente da come il prompt viene aperto:
Questi metodi possono essere combinati in un singolo file batch (ad esempio, cpuinfo.bat
) e fornisce un modo piacevole e veloce per controllare il sistema da un prompt dei comandi standard di Windows NT senza dover ricorrere all'esecuzione di altri programmi o framework.
Il seguente file batch è stato testato su sistemi a 32-bit e Intel 64-bit (si prega di provare su AMD64), dando risultati corretti in <1 secondo:
@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![Test results](https://i.stack.imgur.com/4mmyH.png)" | 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.
0x1&
Non sono riuscito a trovare la proprietà OSArchitecture
(come da risposta di phoebus) quindi suggerirei di usare invece la proprietà SystemType
in ComputerSystem
.
Eseguendo il comando wmic computersystem get systemtype
da un prompt dei comandi si ottiene
C:\Windows\system32>wmic computersystem get systemtype
SystemType x64-based PC
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
Vai su Start “ Esegui e poi digita cmd
. Ora sarete nel prompt dei comandi. Lì puoi digitare systeminfo
e poi premere invio. Ci vogliono alcuni secondi per ottenere tutte le informazioni sul sistema. Puoi trovare anche i dati del processore.
Processor(s): 1 Processor(s) Installed.
[01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
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