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

79

Возможные дубликаты:
Как определить, есть ли на компьютере 64-разрядный ЦП или ОС?
Определить 32/64-разрядную версию Windows Server в ОС CLI
: 32-разрядную или 64-разрядную?

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

Я хочу знать разрядность операционной системы, а не аппаратного обеспечения.

Этот вопрос относится только к командной строке , я не хочу никаких решений с графическим интерфейсом.

отрицательный
источник
1
Хм, это грустно, что systeminfoне перечисляет это.
Тамара Вийсман
@MaQleod - я лично утверждаю, что только потому, что ваш ответ устраивает оба, что вопросы не являются точными дубликатами, потому что этот является гораздо более конкретным сценарием. Я не знаю, подходит ли ваш ответ «только для командной строки», поскольку ему нужна дополнительная утилита, но если бы это был я, я бы опубликовал его в качестве ответа здесь.
Shinrai
@MaQleod Я лично не назвал бы это дубликатом, потому что он просит специально решение только для командной строки. На вопрос, который вы указали, есть приемлемый ответ для решения с графическим интерфейсом.
Бен Ричардс
1
Спасибо за редактирование + ответы. Я выбрал ответ, который лучше всего подходил для моей ситуации.
Негатив
Я закончил тем, что нашел точную копию этого. (Связанный пост специально ссылается только на командную строку и даже дает мое точное решение.)
Shinrai

Ответы:

123

В командной строке с повышенными привилегиями введите wmic os get osarchitecture. Я думаю, что вывод довольно очевиден - он вернет либо «32-разрядный», либо «64-разрядный».

Shinrai
источник
Это похоже на решение, которое я бы использовал ... Теперь, когда я знаю об этом.
Джеймс Т Снелл
2
Или сделать то же самое в Powershell, если вы находитесь на машине W7 или другой ОС Windows, где вы установили PS: (gwmi win32_OperatingSystem) .OSArchitecture
EBGreen
2
Не работает здесь на Windows XP. Возвращает ошибку: неверный запрос.
user606723
1
Предостережение: должен быть администратором для запуска WMIC.
Прорыв
@ user606723 - У меня нет удобной установки XP для тестирования, но я не думаю, что хуки WMI так сильно изменились. ОП, если честно, не указала ОС, но мне придется самому это проверить.
Shinrai
56

Консольная программа systeminfo покажет это. Вы захотите найти строку «Тип системы:». Для 32-разрядных систем будет указано «ПК на базе x86». Для 64-разрядных систем - «ПК на базе x64».

Или, для более быстрого метода, вы можете просто проверить переменную среды PROCESSOR_ARCHITECTURE. 64-битные системы скажут, что AMD64, а 32-битные системы должны сказать «x86». Чтобы проверить это, вы можете просто повторить это:

echo %PROCESSOR_ARCHITECTURE%

Дэвид Ванг (David Wang) из блогов MSDN расширяет этот документ HOWTO: определение процессной битности

Бен Ричардс
источник
Разве это не показывает тип ПРОЦЕССОРА, а не тип установленной ОС?
Shinrai
Я так не думаю, потому что 32-разрядный режим и 64-разрядный режим - это разные режимы, в которых процессор может находиться. Процессор может находиться в 32-разрядном режиме, и я не думаю, что ОС по своей сути знает, сможет ли она переход в 64-битный режим. Тем не менее, это хороший момент, это то, что должно быть проверено. Поскольку я знаю, что у моего брата установлена ​​32-битная версия Win 7 на 64-битном процессоре, я попрошу его проверить меня.
Бен Ричардс
Да, я не уверен (отсюда и предварительный ответ) и, к сожалению, у меня нет ничего, что можно было бы проверить на себе. Я думал, что это просто строка, о которой сообщал данный процессор, независимо от того, как он работает. Было бы полезно знать наверняка.
Shinrai
4
Если вы используете 32-битную ОС в 64-битной системе,% PROCESSOR_ARCHITECTURE% все равно будет «x86». В большинстве случаев 64-битная ОС может запускать 32-битные программы, но это не работает наоборот.
bobbymcr
2
голосование за эхо% PROCESSOR_ARCHITECTURE% работает даже в командной оболочке сервера sql. Где wmic os получает osarchitecture, иногда не работает в командной оболочке сервера sql
Durai Amuthan.H
8

Вы можете проверить, объявлена ​​ли %PROGRAMFILES(x86)%переменная окружения. В 32-битных системах он не будет определен ( %PROGRAMFILES%будет только ). Это также более безопасно, чем просто проверка, существует ли каталог Program Files (x86), так как он может быть перемещен (или даже удален).

Прорвать
источник
Лучше обходной путь, чем проверка папки, да. (Я не люблю использовать обходной путь, но если вы собираетесь это использовать, то именно этот.)
Shinrai
Очень хороший улов ... У меня есть пакет, который проверяет папку, но это определенно будет более элегантным.
WernerCD
1
Вы можете также сравнить %PROGRAMFILES(x86)%и %PROGRAMFILES%переменные , чтобы увидеть , если был запущен CMD в 32 - х или 64 - разрядном режиме. (Потому что в 64-битных окнах вы все равно можете запустить 32-битный cmd.) Пример: IF %PROGRAMFILES(x86)%== %PROGRAMFILES%=> 32-битный cmd (который работает в 64-битных окнах .....) IF %PROGRAMFILES(x86)%<> %PROGRAMFILES%=> 64-битный cmd.
Сэм Хаслер
8

Я написал простое приложение для командной строки, которое сообщит вам, является ли ваш процессор и ваша ОС 64-битными или 32-битными.

Пример считывания:

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

По запросу, здесь находится исходный код, скомпилированный с использованием опции CLI, написанный в 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)

И вот пример, если вы хотите переключатели для CPU (-c) и 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
MaQleod
источник
1
Было бы хорошо, если бы файл пришел с источником. Это довольно неприятно, чтобы загрузить небольшой exe-файл, опубликованный на mediafire, и запустить его.
artifex
1
@artifex, добавлен источник.
MaQleod
это может быть ложным U_U Jocking :)
Питто
Было бы неплохо узнать, что API autoit использует внутренне ..
user606723
3

Что делать, если вы просто проверьте наличие

% SYSTEMROOT% \ Program Files (x86)

или как там это называется?

Джеймс Т Снелл
источник
Не супер решение, но может быть быстрое и грязное решение вашей конкретной проблемы?
Джеймс Т Снелл
Вы победили меня в этом решении, +1. Краткая форма может быть dir \Program *.
Тамара Вийсман