Respuestas:
Una forma un poco más rápida sería verificar la existencia del directorio% ProgramFiles (x86)%. Si existe, entonces está ejecutando 64 bits, si no existe, entonces está ejecutando 32 bits.
One-liner rápido:
if exist "%ProgramFiles(x86)%" echo 64-bit
Eso dará salida 64-bit
si el directorio existe. Sin embargo, eso fallaría si no existiera como una variable pero existiera como un directorio (como% ProgramFiles (x86)%).
También puede usar la herramienta de búsqueda para tener una forma más precisa de determinar la bitness.
set | find "ProgramFiles(x86)"
o usando el systeminfo
comando previamente
systeminfo | find /I "System type"
(incluido el /I
para trabajar en XP / 2003/2008 / etc)
Qué tal si:
echo %PROCESSOR_ARCHITECTURE%
Esto devolverá x86 en sistemas de 32 bits y AMD64 (o IA64 ) en sistemas de 64 bits.
Program Files (x86)
directorio como lo publicó otra persona. Usted podría también comprobar la existencia de la %PROGRAMFILES(X86)%
variable de entorno (si no existe, entonces estás en una máquina x86).
systeminfo | find /I "System type"
Esto depende del entorno local y es lento .
echo %PROCESSOR_ARCHITECTURE%
Tenga en cuenta que es x86 en 32 bits cmd.exe
.
Forma correcta:
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
PROCESSOR_ARCHITEW6432
Otra forma de verificar con una consulta WMI:
Potencia Shell:
(gwmi win32_computersystem).SystemType
CMD:
wmic OS get OSArchitecture
Extraído de aquí: http://www.sysadmit.com/2015/10/windows-como-saber-si-es-de-32-o-64-bits.html
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 Files
directorio (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_ARCHITECTURE
variable, 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.
Esto se probó en sistemas de 32 bits e Intel de 64 bits (pruebe en AMD64), dando resultados correctos en <1 segundo:
@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.
Realmente tuve que profundizar en esto y echar un vistazo real en WMI.
La mejor opción en mi opinión es simplemente usar esta cadena de PowerShell
(Get-WmiObject win32_ComputerSystem -ComputerName $ComputerName).SystemType
Esto incluso funciona con viejos Windows 2003 y XP
La respuesta será una de
PC basada en x64
O si está volviendo a algunas herramientas cmd anticuadas
wmic computersystem get systemtype
Aunque esta no es la respuesta ideal, y systeminfo.exe
debería ser su método preferido para determinar el tipo de sistema, es decir, 32 bits o 64 bits, esta solución se ejecuta un poco más rápido si no desea esperar a systeminfo.exe
que termine su trabajo.
El comando:
reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | find "BuildLabEx"
Con los cambios correctos en la consulta del registro y la cadena de búsqueda, también puede verificar las versiones del sistema operativo desde Windows 95. systeminfo.exe
Es más exacto y la forma correcta de consultar, reg.exe query
es más rápido y más compatible con versiones anteriores.
reg query "HKLM\[..as before..]\Version" /v BuildLabEx
Método 1:
(Validación en dos pasos con PROCESSOR_ARCHITECTURE
y PROCESSOR_ARCHITEW6432
)
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
if %Arch% == "x64" (
msg * "yessss"
) else (
msg * "noooo"
)
Método 2:
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x32" > NUL && set OS=32BIT || set OS=64BIT
if %OS%==32BIT echo "YESSS"
if %OS%==64BIT echo "NOOO"
fuente: /superuser//a/293143/249349
systeminfo | find "System type"
Capitol T no devuelve nada.