Come faccio a determinare se il mio Windows è a 32 o 64 bit usando un comando? [duplicare]


79

Possibili duplicati:
come stabilire se un computer ha una CPU o un sistema operativo a 64 bit
Rileva versione Windows Server 32/64-bit nella versione del sistema operativo CLI
: 32-bit o 64-bit?

Come posso determinare se il mio sistema Windows è a 32 o 64 bit dalla riga di comando?

Voglio conoscere il testimone del sistema operativo, non l'hardware.

Questa domanda si applica esclusivamente alla riga di comando , non voglio soluzioni GUI.


1
Hmm, è triste systeminfonon elencarlo.
Tamara Wijsman,

@MaQleod - Personalmente direi che solo perché la tua risposta soddisfa entrambi, che le domande non sono duplicati esatti perché questo è uno scenario molto più specifico. Non so se la tua risposta si adatta perfettamente alla "riga di comando" poiché ha bisogno di un'utilità aggiuntiva, ma se fossi in me la pubblicherei come risposta qui.
Shinrai,

@MaQleod Personalmente non lo definirei un duplicato poiché richiede una soluzione esclusivamente a riga di comando. La domanda che hai collegato ha una risposta accettata per una soluzione GUI.
Ben Richards,

1
Grazie per la modifica + risposte. Ho scelto la risposta più adatta alla mia situazione.
Negativo

Ho finito per trovare quello che è un duplicato esatto di questo. (Il post collegato fa specifico riferimento alla riga di comando e fornisce persino la mia soluzione esatta.)
Shinrai,

Risposte:


123

Da un prompt dei comandi con privilegi elevati, digitare wmic os get osarchitecture. L'output è abbastanza ovvio, penso - restituirà "32-bit" o "64-bit".


Sembra la soluzione che userei ... Ora che ne so.
James T Snell,

2
O fare la stessa cosa in Powershell se sei su un computer W7 o un altro sistema operativo Windows in cui hai installato PS: (gwmi win32_OperatingSystem) .OSArchitettura
EBGreen

2
Non funziona qui su Windows XP. Errore di restituzione: query non valida.
user606723

1
Avvertenza: deve essere un amministratore per eseguire WMIC.
Sfondamento

@ user606723 - Non ho un'installazione XP a portata di mano su cui testare, ma non pensavo che gli hook WMI fossero cambiati molto. OP non ha specificato un sistema operativo, per essere onesti, ma dovrò testarlo da solo.
Shinrai,

56

Il programma della console di systeminfo mostrerà questo. Dovresti cercare la riga "Tipo di sistema:". Per i sistemi a 32 bit, verrà indicato "PC basato su x86". Per i sistemi a 64 bit, verrà indicato "PC basato su x64".

Oppure, per un metodo più rapido, è possibile semplicemente controllare la variabile d'ambiente PROCESSOR_ARCHITECTURE. I sistemi a 64 bit diranno AMD64 e i sistemi a 32 bit dovrebbero dire "x86". Per verificarlo puoi semplicemente echeggiarlo:

echo %PROCESSOR_ARCHITECTURE%

David Wang su MSDN Blog espande questo HOWTO: Rileva Process Bitness


Questo non mostra il tipo PROCESSOR, non il tipo di sistema operativo installato?
Shinrai,

Non credo, perché la modalità a 32 bit e la modalità a 64 bit sono diverse modalità in cui il processore potrebbe trovarsi. Un processore potrebbe essere in modalità a 32 bit e non penso che il sistema operativo saprebbe intrinsecamente se potesse passaggio in modalità 64 bit. Tuttavia, è un buon punto, è qualcosa che dovrebbe essere testato. Come so, mio ​​fratello ha un'installazione Win 7 a 32 bit su un processore con capacità a 64 bit, gli chiederò di controllarmi.
Ben Richards,

Sì, non ne sono sicuro (da qui la risposta provvisoria) e sfortunatamente non ho nulla di utile da controllare su di me. Ho pensato che fosse solo una stringa che un determinato processore ha riportato indietro, indipendentemente da come funzioni. Sarebbe utile saperlo con certezza.
Shinrai,

4
Se si esegue un sistema operativo a 32 bit su un sistema a 64 bit,% PROCESSOR_ARCHITECTURE% sarà comunque "x86". Nella maggior parte dei casi, un sistema operativo a 64 bit può eseguire programmi a 32 bit, ma ciò non funziona al contrario.
Bobbymcr,

2
up voto come echo% PROCESSOR_ARCHITECTURE% funziona anche nella shell dei comandi del server sql. dove come wmic os ottiene l'architettura a volte non funziona nella shell dei comandi del server sql
Durai Amuthan.H

8

È possibile verificare se %PROGRAMFILES(x86)%viene dichiarata la variabile di ambiente. Nei sistemi a 32 bit, esso non definito (solo %PROGRAMFILES%sarà). Questo è anche più sicuro del semplice controllo dell'esistenza della directory Programmi (x86), poiché può essere spostata (o addirittura eliminata).


Soluzione alternativa rispetto al controllo della cartella, sì. (Non mi piace usare una soluzione alternativa, ma se hai intenzione di farlo è quello da usare.)
Shinrai,

Ottima cattura ... Ho un batch che controlla la cartella, ma questo sarebbe sicuramente più elegante.
WernerCD,

1
Puoi anche confrontare le variabili %PROGRAMFILES(x86)%e %PROGRAMFILES%per vedere se il cmd è stato avviato in modalità 32 bit o 64 bit. (Perché su una finestra a 64 bit è ancora possibile eseguire un cmd a 32 bit.) Esempio: IF %PROGRAMFILES(x86)%== %PROGRAMFILES%=> 32 bit cmd (che è in esecuzione su una finestra a 64 bit .....) IF %PROGRAMFILES(x86)%<> %PROGRAMFILES%=> 64 bit cmd.
Sam Hasler,

8

Ho scritto una semplice applicazione da riga di comando che ti dirà se il tuo processore e il tuo sistema operativo sono a 64 o 32 bit.

Esempio di lettura:

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

Per richiesta, ecco la fonte, compilata usando l'opzione CLI, scritta in 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)

Ed ecco un esempio se vuoi switch per CPU (-c) e 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

1
Sarei bello se il file arrivasse con il sorgente. È piuttosto snervante scaricare un piccolo exe, pubblicato su mediafire ed eseguirlo.
Artifex,

1
@artifex, fonte aggiunta.
MaQleod,

potrebbe essere falso U_U Jocking :)
Pitto,

Sarebbe bello sapere quale autoit API sta usando internamente.
user606723

3

Che cosa succede se si controlla la presenza di

% SYSTEMROOT% \ Programmi (x86)

o come si chiama?


Non è una soluzione super, ma forse lavori rapidi e sporchi per il tuo problema particolare?
James T Snell,

Mi hai battuto per questa soluzione, +1. Una forma breve potrebbe essere dir \Program *.
Tamara Wijsman,
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.