Як визначити, чи моя Windows 32-бітна або 64-розрядна за допомогою команди? [дублікат]


78

Можливі копії:
Як визначити, чи є на комп’ютері 64-розрядний процесор чи ОС
Виявити 32/64-бітну версію ОС Windows Server у версії ОС CLI
: 32-бітну або 64-бітну?

Як визначити, чи моя система Windows є 32-бітною або 64-розрядною з командного рядка?

Хочу знати біт операційної системи, а не апаратного забезпечення.

Це питання стосується лише командного рядка , я не хочу жодних рішень GUI.


1
Хм, сумно, що systeminfoце не перераховується.
Тамара Війсман

@MaQleod - Я особисто стверджую, що лише тому, що ваша відповідь відповідає обом, що питання не є точними дублікатами, тому що це набагато більш конкретний сценарій. Я не знаю, чи відповідає ваша відповідь лише "командному рядку", оскільки потрібна додаткова утиліта, але якби я був, я б опублікував це як відповідь тут.
Shinrai

@MaQleod я особисто не називав би це дублікатом, оскільки він просить конкретного рішення лише для командного рядка. Питання, яке ви пов’язали, має прийняту відповідь на рішення GUI.
Бен Річардс

1
Дякую за редагування + відповіді. Я вибрав відповідь, яка найкраще відповідала моїй ситуації.
Негативний

Я виявив, що є точним дублікатом цього. (Посилання, пов’язане лише з командним рядком, і навіть дає моє точне рішення.)
Shinrai,

Відповіді:


122

У командному рядку підвищеного типу введіть wmic os get osarchitecture. Вихід є досить очевидним, я думаю - він поверне або "32-бітний", або "64-розрядний".


Це звучить як рішення, яке я б використав ... Тепер, коли я знаю про це.
Джеймс Т Снелл

2
Або зробити те ж саме в Powershell, якщо ви працюєте на машині W7 або іншій ОС Windows, де ви встановили PS: (gwmi win32_OperatingSystem) .OSArchitecture
EBGreen

2
Тут не працює Windows XP. Помилка повернення: недійсний запит.
користувач606723

1
Caveat: повинен бути адміністратором для запуску WMIC.
Прорив

@ user606723 - У мене немає зручної установки XP для тестування, але я не думав, що гачки WMI так сильно змінилися. OP не вказав ОС, щоб бути справедливим, але мені доведеться перевірити це сам.
Shinrai

56

Програма консолі systeminfo покаже це. Вам потрібно буде шукати рядок "Тип системи:". Для 32-бітних систем він скаже "ПК на базі x86", а для 64-бітних систем - "ПК на базі x64".

Або для більш швидкого методу ви можете просто перевірити змінну середовища PROCESSOR_ARCHITECTURE. 64-бітні системи скажуть, що AMD64, а 32-бітні системи повинні говорити "x86". Щоб перевірити це, ви можете просто повторити це:

echo %PROCESSOR_ARCHITECTURE%

Девід Ванґ в MSDN Blogs розширюється на цьому HOWTO: Виявлення Bitness процесу


Це не відображає тип ПРОЦЕСОРА, а не встановлений тип ОС?
Shinrai

Я не думаю, що 32-бітний режим і 64-бітний режим - це різні режими, в яких процесор міг би бути. Процесор міг би бути в 32-бітному режимі, і я не думаю, що ОС би це знала, якби це могло перехід у 64-бітний режим. Однак це хороший момент, це те, що доведеться перевірити. Оскільки я знаю, що мій брат має 32-бітний Win 7, встановлений на 64-бітному процесорі, я попрошу його перевірити мене.
Бен Річардс

Так, я не впевнений (звідси попередня відповідь) і, на жаль, не маю нічого зручного, щоб перевірити себе. Я думав, що це лише рядок, про який даний процесор повідомляв, незалежно від того, як він функціонує. Було б корисно знати точно.
Shinrai

4
Якщо ви запускаєте 32-бітну ОС у 64-бітній системі,% PROCESSOR_ARCHITECTURE% все одно буде "x86". У більшості випадків 64-розрядна ОС може запускати 32-бітні програми, але це не працює навпаки.
bobbymcr

2
вгору голосуйте як echo% PROCESSOR_ARCHITECTURE% працює навіть у командній оболонці сервера sql. Де Wmic os отримує оархітектуру, колись не працює в командній оболонці сервера sql
Durai Amuthan.H

8

Ви можете перевірити, чи оголошена %PROGRAMFILES(x86)%змінна середовища. У 32-бітних системах це не буде визначено (тільки %PROGRAMFILES%буде). Це також безпечніше, ніж просто перевірити, чи існує каталог програмних файлів (x86), оскільки його можна перемістити (або навіть видалити).


Краще рішення, ніж перевірка папки, так. (Мені не подобається використовувати обхідний шлях, але якщо ви збираєтеся це використовувати, - це той, який потрібно використовувати.)
Shinrai

Дуже хороший улов ... У мене є партія, яка перевіряє папку, але це, безумовно, було б більш елегантно.
WernerCD

1
Ви також можете порівняти %PROGRAMFILES(x86)%і %PROGRAMFILES%змінні, щоб побачити, чи запущено cmd в режимі 32 біт або 64 біт. (Оскільки у 64-бітових вікнах ви все ще можете запустити 32-бітний cmd.) Приклад: IF %PROGRAMFILES(x86)%== %PROGRAMFILES%=> 32-бітний cmd (що працює на 64-бітових вікнах .....) IF %PROGRAMFILES(x86)%<> %PROGRAMFILES%=> 64bit 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)

Ось приклад, якщо ви хочете комутатори для процесора (-c) та ОС (-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

1
Було б добре, якби файл прийшов із джерелом. Це скоріше нервувати завантаження невеликого EXE, розміщеного на mediafire, та запустити його.
artifex

1
@artifex, додано джерело.
MaQleod

це може бути помилковим U_U Jocking :)
Пітто,

Було б непогано знати, що API autoit використовує всередині ..
user606723,

3

Що робити, якщо просто перевірити наявність

% SYSTEMROOT% \ Програмні файли (x86)

або як би це не називалося?


Не супер рішення, але, можливо, швидко і брудно працює для вашої конкретної проблеми?
Джеймс Т Снелл

Ви побили мене до цього рішення, +1. Коротка форма могла бути dir \Program *.
Тамара Війсман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.