¿Cómo determino si mi Windows es de 32 bits o de 64 bits usando un comando? [duplicar]


79

Posibles duplicados:
¿Cómo saber si una computadora tiene una CPU o un SO de 64 bits? ¿
Detecta Windows Server versión 32/64-bit en la versión CLI
OS: 32-bit o 64-bit?

¿Cómo determino si mi sistema Windows es de 32 o 64 bits desde la línea de comandos?

Quiero saber el bitness del sistema operativo, no el hardware.

Esta pregunta se aplica estrictamente a la línea de comandos solamente , no quiero ninguna solución GUI.


1
Hmm, es triste que systeminfono enumere esto.
Tamara Wijsman

@MaQleod - Yo personalmente argumentaría que solo porque su respuesta es adecuada para ambos, que las preguntas no son duplicados exactos porque este es un escenario mucho más específico. No sé si su respuesta se ajusta a la "línea de comando solamente", ya que necesita una utilidad adicional, pero si fuera yo, la publicaría aquí como respuesta.
Shinrai

@MaQleod Yo personalmente no lo llamaría un duplicado ya que está pidiendo una solución específica de línea de comandos. La pregunta que ha vinculado tiene una respuesta aceptada para una solución GUI.
Ben Richards

1
Gracias por la edición + respuestas. Elegí la respuesta que mejor se adaptaba a mi situación.
Negativo el

Terminé encontrando lo que ES un duplicado exacto de esto. (La publicación vinculada hace referencia específicamente solo a la línea de comandos e incluso proporciona mi solución exacta).
Shinrai

Respuestas:


123

Desde un símbolo del sistema elevado, escriba wmic os get osarchitecture. Creo que el resultado es bastante obvio: devolverá "32 bits" o "64 bits".


Esto suena como la solución que usaría ... Ahora que lo sé.
James T Snell

2
O para hacer lo mismo en Powershell si está en una máquina W7 u otro sistema operativo Windows donde ha instalado PS: (gwmi win32_OperatingSystem) .OSArchitecture
EBGreen

2
No funciona aquí en Windows XP. Devuelve error: consulta no válida.
user606723

1
Advertencia: debe ser un administrador para ejecutar WMIC.
Avance el

@ user606723 - No tengo una instalación de XP útil para probar, pero no pensé que los ganchos de WMI hubieran cambiado tanto. OP no especificó un sistema operativo, para ser justos, pero tendré que probarlo yo mismo.
Shinrai el

56

El programa de consola de systeminfo lo mostrará. Deberá buscar la línea "Tipo de sistema:". Para sistemas de 32 bits, dirá "PC basada en x86". Para sistemas de 64 bits, dirá "PC basada en x64".

O, para un método más rápido, simplemente puede verificar la variable de entorno PROCESSOR_ARCHITECTURE. Los sistemas de 64 bits dirán AMD64 y los sistemas de 32 bits deberían decir "x86". Para verificar esto, simplemente puede repetirlo:

echo %PROCESSOR_ARCHITECTURE%

David Wang en MSDN Blogs amplía este COMO: Detectar Bitness de Proceso


¿No muestra esto el tipo de PROCESADOR, no el tipo de sistema operativo instalado?
Shinrai

No lo creo, porque el modo de 32 bits y el modo de 64 bits son modos diferentes en los que podría estar el procesador. Un procesador podría estar en modo de 32 bits, y no creo que el sistema operativo lo conozca inherentemente si pudiera transición al modo de 64 bits. Sin embargo, es un buen punto, es algo que tendría que ser probado. Como sé que mi hermano tiene una instalación Win 7 de 32 bits en un procesador con capacidad de 64 bits, le pediré que me revise.
Ben Richards

Sí, no estoy seguro (de ahí la respuesta tentativa) y desafortunadamente no tengo nada a mano para comprobarlo. Pensé que esto era solo una cadena que un procesador dado informó, independientemente de cómo esté funcionando. Sería útil saberlo con certeza.
Shinrai

44
Si ejecuta un sistema operativo de 32 bits en un sistema de 64 bits,% PROCESSOR_ARCHITECTURE% seguirá siendo "x86". En la mayoría de los casos, un sistema operativo de 64 bits puede ejecutar programas de 32 bits, pero esto no funciona al revés.
bobbymcr

2
arriba votar como echo% PROCESSOR_ARCHITECTURE% funciona incluso en el shell de comandos del servidor sql también. En ocasiones, cuando wmic os obtiene la arquitectura alguna vez no funciona en el shell de comandos del servidor sql
Durai Amuthan. H

8

Puede verificar si %PROGRAMFILES(x86)%se declara la variable de entorno. En sistemas de 32 bits, no se definirá (solo %PROGRAMFILES%se definirá ). Esto también es más seguro que simplemente verificar si existe el directorio Archivos de programa (x86), ya que se puede mover (o incluso eliminar).


Mejor solución que buscar la carpeta, sí. (No me gusta usar una solución alternativa, pero si vas a hacerlo, esta es la que
debes

Muy buena captura ... Tengo un lote que comprueba la carpeta, pero definitivamente sería más elegante.
WernerCD

1
También puede comparar las variables %PROGRAMFILES(x86)%y %PROGRAMFILES%para ver si el cmd se ha iniciado en modo de 32 bits o 64 bits. (Porque en una ventana de 64 bits aún puede ejecutar un cmd de 32 bits). Ejemplo: IF %PROGRAMFILES(x86)%== %PROGRAMFILES%=> cmd de 32 bits (que se ejecuta en una ventana de 64 bits .....) IF %PROGRAMFILES(x86)%<> %PROGRAMFILES%=> cmd de 64 bits.
Sam Hasler

8

Escribí una aplicación de línea de comando simple que le dirá si su procesador y su sistema operativo son de 64 bits o de 32 bits.

Ejemplo de lectura:

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

Por solicitud, aquí está la fuente, compilada usando la opción CLI, escrita en 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)

Y aquí hay un ejemplo si desea interruptores para CPU (-c) y 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
Sería bueno si el archivo viniera con la fuente. Es bastante desconcertante descargar un pequeño ejecutable, publicado en mediafire, y ejecutarlo.
artifex

1
@artifex, fuente agregada.
MaQleod

podría ser falso U_U Jocking :)
Pitto

Sería bueno saber qué API autoit está utilizando internamente ..
user606723

3

¿Qué pasa si solo verificas la presencia de

% SYSTEMROOT% \ Archivos de programa (x86)

o como se llame?


No es una súper solución, pero ¿quizás funcione rápido y sucio para su problema particular?
James T Snell

Me ganaste a esta solución, +1. Una forma corta podría ser dir \Program *.
Tamara Wijsman
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.