¿Cómo puedo determinar si la versión actual de Windows es de 32 bits o de 64 bits desde la línea de comandos? [duplicar]


26

¿Cuál es la línea de comando para averiguar si el sistema operativo está ejecutando una versión de 32 bits o 64 bits de Windows?


¡¿En que idioma?!
Alix Axel

@AlixAxel, bueno, dijeron línea de comandos , así que presumiblemente, si acaso, Batch.
Synetech

Respuestas:


33

Puede obtener esto a través de WMI:

wmic OS get OSArchitecture

Ejemplo en mi sistema:

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

Me gusta esta respuesta (tengo que aprenderme algo de consola WMI :)), pero tengo que dársela a "systeminfo" para las pulsaciones de teclas. ;)
Ƭᴇcʜιᴇ007

XP?
Synetech

18

Línea de comando:

systeminfo | findstr /I type:

salida de ejemplo:

Tipo de sistema: PC basada en X86

X86 indica un sistema de 32 bits en este ejemplo.

(el /I parámetro indica búsqueda sin distinción entre mayúsculas y minúsculas )


Te di un punto para las pulsaciones de teclas, y luego lo hiciste más largo. jeje :)
Ƭᴇcʜιᴇ007

No es mi respuesta: P
John T

2
¿Pero es "PC basada en X86" lo mismo que OSArchitecture 32-bit? Puede ejecutar Win XP de 32 bits en un procesador x64.
Michael Caron

¡tenga cuidado si el idioma de su sistema operativo es alemán (o tal vez cualquier otro que no sea inglés)! Tengo que cambiar systeminfo | findstr /I typ:ya que toda la entrada esSystemtyp: x64-based PC
CeOnSql

systeminfo | findstr /C:"System Type"También recupera la misma información, pero supongo que el texto más largo es menos preferido.
Abhijeet

13

No puedo adjuntar respuesta a otra publicación, así que aquí. Establecer el resultado de systeminfo- lleva una cantidad de tiempo bastante buena y escribe en la consola, por lo que no es la mejor solución para los archivos de comandos (scripts por lotes; de todos modos, le gusta llamarlos B-)).

Incluso con el findstr- no encuentra esto en la versión de Windows en otro idioma. En un idioma centroeuropeo win7 os también devuelve ... "basado en X86" ... en el resultado, pero buscaban algo más en el "tipo". No estoy seguro de que pueda variar en otras variantes de idioma del sistema operativo.

Probablemente el método "wmic" es el más confiable: pregunta directamente al sistema operativo.

Otra posible solución rápida puede ser examinar una variable (al menos trabajando en win7 para mí).

echo %PROCESSOR_ARCHITECTURE%

Ok, es bastante largo de recordar, pero es posible set | findstr ARCHrecordarlo.

Claro, algunos pueden modificar una variable del sistema, por lo que no es tan confiable como wmic. Pero se puede usar rápidamente.

Espero poder ayudar a alguien.


No estaba seguro de que el comando echo funcionara en mi caja XP porque nunca antes había visto esta variable de entorno (quizás porque nunca la había buscado), pero lo hace. +1 para una solución simple.
music2myear

11

Existen numerosas formas de verificar la arquitectura del procesador en Windows:

  • La forma más rápida, fácil y compatible de verificar la arquitectura del procesador en Windows 2000 y versiones posteriores es examinar la PROCESSOR_ARCHITECTURE variable de entorno :

    echo %PROCESSOR_ARCHITECTURE%

  • Sin embargo, esto puede dar resultados diferentes, dependiendo de la forma en que se abre el símbolo del sistema. Para evitar obtener "resultados inesperados" debido a WoW64 , puede leerlo directamente desde el registro (Microsoft realizó no menos de dos errores tipográficos en la clave ):

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

  • Microsoft también sugiere leer el almacén de información de hardware del registro:

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

  • También puede verificar la existencia de la versión x86 del Program Filesdirectorio (o la variable de entorno que lo señala), ya que solo existiría en un sistema de 64 bits. A diferencia de la PROCESSOR_ARCHITECTUREvariable, esto no depende de la forma en que se ejecuta el símbolo del sistema ya que el directorio existe (o no) independientemente de cómo se abra el indicador:

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

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

Estos métodos se pueden combinar en un único archivo por lotes (por ejemplo, cpuinfo.bat) y proporciona una manera agradable y rápida de verificar el sistema desde un símbolo del sistema estándar de Windows NT sin necesidad de recurrir a la ejecución de otros programas o marcos.

El archivo por lotes a continuación se probó en sistemas de 32 bits e Intel de 64 bits (pruebe en AMD64), dando resultados correctos en <1 segundo:

Resultados de la prueba

@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

No pude encontrar la OSArchitecturepropiedad (según la respuesta de phoebus), por lo que sugeriría usar la SystemTypepropiedad en su ComputerSystemlugar.

Ejecutar el comando wmic computersystem get systemtypedesde un símbolo del sistema da

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC

4

Línea de comando regular: wmic OS get OSArchitecture (IIRC)

Potencia Shell: (gwmi win32_computersystem).SystemType


1
Me meto Invalid Queryen XP.
Synetech

1

Si se refiere al sistema operativo Windows, puede usar 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

Puede encontrar esa información usando "Información del sistema"

Inicio-> Ejecutar -> winmsd.exe

En "Resumen del sistema" / Tipo de sistema, puede encontrar la versión del sistema operativo

X64 -> 64 bits
X86 -> 32 bits

La respuesta de JohnT en GUI;)


1

Vaya a Inicio »Ejecutar y luego escriba cmd. Ahora estará en el símbolo del sistema. Allí puede escribir systeminfoy luego presionar enter. Tarda unos segundos en obtener toda la información del sistema. También puede encontrar los datos del procesador.

 Processor(s):              1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
  • x86 Family significa que su procesador es de 32 bits.
  • Familia x64 significa que su procesador es de 64 bits.

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
¡Toma unos segundos de hecho! Y ejecutarlo nuevamente no ayudará porque no almacena en caché la información. Además, las actualizaciones de Windows hacen que la parte de la arquitectura se desplace rápidamente fuera de la pantalla, por lo que, a menos que tenga un búfer lo suficientemente grande, debe canalizarlo more.
Synetech

0

Código simple que utilicé:

:arch
set p | findstr /i AMD64 > nul
if not errorlevel 1 goto no64
goto eof
:no64
code to execute
:eof
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.