Ответы:
Немного более быстрый способ - проверить наличие каталога% ProgramFiles (x86)%. Если он существует, значит, вы используете 64-разрядную версию, если ее нет, значит, вы используете 32-разрядную версию.
Быстрый однострочник:
if exist "%ProgramFiles(x86)%" echo 64-bit
Это выведет, 64-bit
если каталог существует. Однако это не получится, если он не существует как переменная, но существует как каталог (как% ProgramFiles (x86)%).
Вы также можете использовать инструмент поиска, чтобы иметь более точный способ определения битности.
set | find "ProgramFiles(x86)"
или используя systeminfo
команду ранее
systeminfo | find /I "System type"
(включен /I
для работы через XP / 2003/2008 / etc)
Как насчет:
echo %PROCESSOR_ARCHITECTURE%
Это вернет x86 в 32-битных системах и AMD64 (или IA64 ) в 64-битных системах.
Program Files (x86)
каталога, как кто-то другой опубликовал. Вы также можете проверить наличие %PROGRAMFILES(X86)%
переменной окружения (если она не существует, значит, вы находитесь на компьютере с архитектурой x86).
systeminfo | find /I "System type"
Это зависит от локали и медленно .
echo %PROCESSOR_ARCHITECTURE%
Обратите внимание, что это 32-разрядная версия x86cmd.exe
.
Правильный путь:
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
PROCESSOR_ARCHITEW6432
Другой способ проверить с помощью запроса WMI:
PowerShell:
(gwmi win32_computersystem).SystemType
CMD:
wmic OS get OSArchitecture
Извлечено отсюда: http://www.sysadmit.com/2015/10/windows-como-saber-si-es-de-32-o-64-bits.html
Существует множество способов проверить архитектуру процессора под Windows:
Самый быстрый, простой и совместимый способ проверить архитектуру процессора как минимум в Windows 2000 и выше - это проверить PROCESSOR_ARCHITECTURE
переменную среды :
echo %PROCESSOR_ARCHITECTURE%
Однако это может дать разные результаты, в зависимости от способа открытия командной строки. Чтобы избежать «неожиданных результатов» из-за WoW64 , вы можете прочитать его непосредственно из реестра (Microsoft сделала не менее двух опечаток в ключе ):
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE
Microsoft также предлагает прочитать информацию об оборудовании из реестра:
reg query "HKLM\Hardware\Description\System\CentralProcessor\0" /v Identifier
Вы также можете проверить существование Program Files
каталога x86 (или переменной среды, которая на него указывает), поскольку он существует только в 64-битной системе. В отличие от PROCESSOR_ARCHITECTURE
переменной, это не зависит от способа запуска командной строки, поскольку каталог существует (или нет) независимо от того, как открывается приглашение:
::via env-var
if not defined ProgramFiles(x86) echo 32-bit
::via file-system
if not exist "%systemdrive%\Program Files (x86)" echo 32-bit
Эти методы могут быть объединены в один пакетный файл (например, cpuinfo.bat
) и предоставляют хороший, молниеносный способ проверки системы из стандартной командной строки Windows NT без необходимости прибегать к запуску других программ или сред.
Это было протестировано на 32-битных и 64-битных системах Intel (пожалуйста, протестируйте на AMD64), давая правильные результаты в течение <1 секунды:
@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.
Мне действительно пришлось покопаться в этом и по-настоящему осмотреться в WMI.
На мой взгляд, лучший вариант - просто использовать эту строку PowerShell.
(Get-WmiObject win32_ComputerSystem -ComputerName $ComputerName).SystemType
Это даже работает со старыми Windows 2003 и XP
Ответ будет одним из
ПК на базе x64
Или если вернуться к старомодным инструментам cmd
wmic computersystem get systemtype
Хотя это не идеальный ответ и systeminfo.exe
должен быть вашим предпочтительным методом определения типа системы, т. Е. 32-битной или 64-битной, это решение работает немного быстрее, если вы не хотите ждать systeminfo.exe
окончания своей работы.
Команда:
reg.exe query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | find "BuildLabEx"
С правильными изменениями в запросе реестра и строке поиска вы также можете проверить версии операционной системы, начиная с Windows 95. systeminfo.exe
Более точный и правильный способ запроса, reg.exe query
более быстрый и более обратно совместимый.
reg query "HKLM\[..as before..]\Version" /v BuildLabEx
Метод 1:
(двухэтапная проверка с помощью PROCESSOR_ARCHITECTURE
и 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"
)
Способ 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"
источник: /superuser//a/293143/249349
systeminfo | find "System type"
Capitol T ничего не возвращает.