2010-01-15 05:28:57 +0000 2010-01-15 05:28:57 +0000
26
26

Как определить из командной строки, является ли текущая версия Windows 32-битной или 64-битной?

Что такое командная строка, чтобы узнать, работает ли ОС 32-битная версия или 64-битная Windows?

Ответы (9)

34
34
34
2010-01-15 05:38:37 +0000

Вы можете получить это через WMI:

wmic OS get OSArchitecture

Пример на моей системе:

C:\>wmic OS get OSArchitecture
OSArchitecture
32-bit
13
13
13
2011-10-20 15:43:09 +0000

Я не могу прикрепить ответ к другому посту, поэтому здесь. Вывод результата systeminfo - занимает довольно много времени и записывается в консоль, так что это не лучшее решение для командных файлов (пакетные скрипты - как бы то ни было Вам нравится называть их B-) ).

Даже с findstr - на других языковых версиях окон этого не найдется. На центральном европейском языке win7 os он также возвращает … “X86-based”… на результат, но что-то другое на тогдашнем “типе” искали. Я не уверен, что это может отличаться на других языковых вариантах os.

Наверное, самый надежный метод “wmic” - он запрашивает os напрямую.

Другим возможным быстрым решением может быть изучение переменной (по крайней мере, работая на win7 у меня).

echo %PROCESSOR_ARCHITECTURE%

Ok - достаточно долго запоминается, но возможно set | findstr ARCH можно запомнить.

Конечно - некоторые могут модифицировать системную переменную так, чтобы она не была настолько надежной, как wmic. Но может быть использована быстро.

Надеюсь, я смогу кому-нибудь помочь.

12
12
12
2012-06-24 15:23:24 +0000

Существует множество способов проверки архитектуры процессора под Windows:

  • Самый быстрый, простой и совместимый способ проверить архитектуру процессора в как минимум Windows 2000 и выше - это проверить переменную окружения PROCESSOR_ARCHITECTURE переменную окружения :

  • Однако, это может дать разные результаты в зависимости от способа открытия командной строки. Чтобы избежать получения “неожиданных результатов” из-за WoW64 , вы можете прочитать её непосредственно из реестра (Microsoft сделала не менее двух опечаток в ключе ):

  • Microsoft также предлагает прочитать аппаратное информационное хранилище из реестра:

  • Вы также можете проверить существование x86 версии каталога Program Files (или переменной окружения ](http://en.wikipedia.org/wiki/Environment_variable#Default_Values_on_Microsoft_Windows), указывающей на неё), так как она будет существовать только на 64-битной системе. В отличие от переменной PROCESSOR_ARCHITECTURE, это не зависит от способа запуска командной строки, так как каталог существует (или нет) независимо от того, как она открывается:

Эти методы могут быть объединены в один пакетный файл (например, cpuinfo.bat) и обеспечивают хороший, молниеносный способ проверки системы из стандартной командной строки Windows NT без необходимости прибегать к запуску других программ или фреймворков.

Приведенный ниже пакетный файл был протестирован на 32-битных и 64-битных системах Intel (пожалуйста, протестируйте на AMD64), дав корректные результаты по адресу <1 second:

@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![Test results](https://i.stack.imgur.com/4mmyH.png)" | 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.

0x1&.

6
6
6
2012-06-24 14:16:19 +0000

Я не смог найти свойство OSArchitecture (согласно ответу Фибус), поэтому я бы предложил использовать свойство SystemType в ComputerSystem.

Выполнение команды wmic computersystem get systemtype из командной строки дает

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC
4
4
4
2010-01-15 05:42:49 +0000

Обычная командная строка: wmic OS get OSArchitecture (IIRC)

PowerShell: (gwmi win32_computersystem).SystemType

1
1
1
2010-01-15 06:35:11 +0000

Информацию можно найти с помощью “Сведения о системе”

Start-> Run -> winmsd.exe

В разделе “Сводка по системе” / “Тип системы” можно найти версию ОС

X64 -> 64 Битовые X86 -> 32 Битовые

Ответ ДжонТ в графическом интерфейсе ;)

1
1
1
2010-01-15 05:38:45 +0000

если вы имеете в виду windows OS, вы можете использовать vbscript с 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
1
1
2012-03-28 07:21:13 +0000

Перейдите к началу “ Бегите, а затем введите cmd. Теперь вы будете в командной строке. Там вы можете набрать systeminfo и нажать клавишу enter. Это займет несколько секунд, чтобы получить всю системную информацию. Вы также можете найти данные о процессоре.

Processor(s): 1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
  • семейство x86 означает, что ваш процессор 32-битный.
  • x64 Семейство означает, что ваш процессор 64-битный.

C:\Documents и 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
```.
0
0
0
2013-06-25 16:19:58 +0000

Простой код, который я использовал:

:arch
set p | findstr /i AMD64 > nul
if not errorlevel 1 goto no64
goto eof
:no64
code to execute
:eof