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


26

Який командний рядок з’ясувати, чи працює в ОС 32-бітна версія або 64-бітна Windows?


Якою мовою ?!
Алікс Аксель

@AlixAxel, добре, що вони сказали командний рядок , тому, імовірно, якщо що, Batch.
Synetech

Відповіді:


33

Ви можете отримати це за допомогою WMI:

wmic OS get OSArchitecture

Приклад у моїй системі:

C:\>wmic OS get OSArchitecture
OSArchitecture
32-bit

Мені подобається ця відповідь (треба піти навчити мене консолі WMI :)), але я повинен дати їй "systeminfo" для натискань клавіш. ;)
Ƭᴇcʜιᴇ007

XP?
Synetech

18

Командний рядок:

systeminfo | findstr /I type:

Приклад виведення:

Тип системи: ПК на базі X86

X86 вказує 32-бітну систему в цьому прикладі.

( /I параметр вказує на нечутливий до регістру пошук )


Я дав вам бал за натискання клавіш, а потім ви зробили це довше. hehe :)
Ƭᴇcʜιᴇ007

Це не моя відповідь: П
Джон T

2
Але чи "ПК на базі X86" такий же, як 32-розрядний OSArchitecture? Ви можете запустити 32-бітний Win XP на процесорі x64.
Майкл Карон

будьте обережні, якщо ваша мова ОС є німецькою (або, можливо, будь-якою іншою, ніж англійська мова)! Я повинен змінитись, systeminfo | findstr /I typ:оскільки весь записSystemtyp: x64-based PC
CeOnSql

systeminfo | findstr /C:"System Type"також отримує ту саму інформацію, але я думаю, що довший текст настільки менш бажаний.
Abhijeet

13

Я не можу долучити відповідь до іншої публікації, ось тут. Передача результатів systeminfo- займає досить непогану кількість часу і записується на консоль, тому це не найкраще рішення для командних файлів (пакетні сценарії - як би ви їх не називали B-)).

Навіть за допомогою findstr- цього не можна знайти в інших мовних версіях Windows. На центральній європейській мові win7 os він також повертається ... "на основі X86" ... за результатом, але щось інше, ніж тоді "тип" шукали. Я не впевнений, що це може відрізнятися від інших мовних варіантів os.

Напевно, "wmic" метод є найнадійнішим - він запитує оператора безпосередньо.

Іншим можливим швидким рішенням може бути вивчення змінної (принаймні, робота над win7 у мене).

echo %PROCESSOR_ARCHITECTURE%

Гаразд - запам'ятати досить довго, але можливо set | findstr ARCHзапам'ятати.

Впевнені - деякі можуть змінити системну змінну, щоб не бути надійною, ніж wmic. Але можна використовувати швидко.

Я сподіваюся, що я можу допомогти комусь.


Я не був впевнений, що команда echo буде працювати на моєму вікні XP, тому що я ніколи раніше не бачив цієї змінної середовища (можливо, тому, що я ніколи її не шукав), але це так. +1 для простого рішення.
music2myear

11

Існує чимало способів перевірити архітектуру процесора під Windows:

  • Найшвидший, найпростіший і найбільш сумісний спосіб перевірити архітектуру процесора принаймні в Windows 2000 і вище - це вивчити PROCESSOR_ARCHITECTURE змінну середовища :

    echo %PROCESSOR_ARCHITECTURE%

  • Однак це може дати різні результати, залежно від способу відкриття командного рядка. Щоб уникнути отримання «несподіваних результатів» завдяки WoW64 , ви можете прочитати його безпосередньо з реєстру (Microsoft зробила не менше двох помилок на ключі ):

    reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE

  • Корпорація Майкрософт також пропонує прочитати апаратний запас інформації з реєстру:

    reg query "HKLM\Hardware\Description\System\CentralProcessor\0" /v Identifier

  • Ви також можете перевірити наявність версії x86 Program Filesкаталогу (або змінної середовища, яка вказує на нього), оскільки вона існувала б лише у 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).

Результати тесту

@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.

5

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

Запуск команди wmic computersystem get systemtypeз командного рядка дає

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC

4

Регулярний командний рядок: wmic OS get OSArchitecture (IIRC)

PowerShell: (gwmi win32_computersystem).SystemType


1
Я потрапляю Invalid Queryв XP.
Synetech

1

якщо ви маєте на увазі ОС Windows, ви можете використовувати 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

Ви можете знайти цю інформацію за допомогою "Інформація про систему"

Пуск-> Виконати -> winmsd.exe

У розділі "Підсумок системи" / Тип системи ви можете знайти версію ОС

X64 -> 64 біт
X86 -> 32 біт

Відповідь JohnT в GUI;)


1

Перейдіть до пункту Пуск »Виконати і введіть cmd. Тепер ви будете в командному рядку. Там ви можете ввести systeminfoта натиснути клавішу Enter. Отримати всю інформацію про вашу систему потрібно кілька секунд. Ви також можете знайти дані процесора.

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

C: \ Документи та параметри \ 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

2
Дійсно кілька секунд! І запустити його знову не допоможе, оскільки він не кешує інформацію. Крім того, оновлення Windows призводить до того, що частина про архітектуру швидко прокручується за межі екрана, тому, якщо у вас недостатньо великий буфер, вам потрібно передати його more.
Synetech

0

Простий код, який я використав:

:arch
set p | findstr /i AMD64 > nul
if not errorlevel 1 goto no64
goto eof
:no64
code to execute
:eof
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.