Làm cách nào để xác định xem phiên bản hiện tại của Windows là 32-bit hay 64-bit từ dòng lệnh? [bản sao]


26

Dòng lệnh để tìm hiểu xem HĐH đang chạy phiên bản 32 bit hay 64 bit của Windows?


Nói bằng ngôn ngữ gì?!
Alix Axel

@AlixAxel, họ nói dòng lệnh , vì vậy có lẽ, nếu có bất cứ điều gì, Batch.
Synetech

Câu trả lời:


33

Bạn có thể có được điều này thông qua WMI:

wmic OS get OSArchitecture

Ví dụ trên hệ thống của tôi:

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

Tôi thích câu trả lời này (tôi phải tìm hiểu cho tôi một số giao diện điều khiển WMI :)), nhưng tôi phải đưa nó cho "systeminfo" cho các lần nhấn phím. ;)
Ƭᴇcʜιᴇ007

XP?
Synetech

18

Dòng lệnh:

systeminfo | findstr /I type:

đầu ra ví dụ:

Loại hệ thống: PC dựa trên X86

X86 chỉ ra hệ thống 32 bit trong ví dụ này.

( /I tham số cho biết tìm kiếm không phân biệt chữ hoa chữ thường )


Tôi đã cho bạn một điểm cho tổ hợp phím, và sau đó bạn làm cho nó dài hơn. hehe :)
cʜιᴇ007

Đó không phải là câu trả lời của tôi: P
John T

2
Nhưng "PC dựa trên X86" có giống với OSArch architecture 32-bit không? Bạn có thể chạy Win XP 32 bit trên bộ xử lý x64.
Michael Caron

hãy cẩn thận nếu ngôn ngữ hệ điều hành của bạn là tiếng Đức (hoặc có thể là bất kỳ ngôn ngữ nào khác ngoài tiếng Anh)! Tôi phải thay đổi thành systeminfo | findstr /I typ:toàn bộ mục nhậpSystemtyp: x64-based PC
CeOnSql

systeminfo | findstr /C:"System Type"cũng lấy thông tin tương tự, nhưng tôi đoán văn bản dài hơn nên ít được ưa thích hơn.
Abhijeet

13

Tôi không thể đính kèm câu trả lời cho bài viết khác ở đây. Kết quả là systeminfo- đang mất một khoảng thời gian khá tốt và ghi vào bàn điều khiển, vì vậy đây không phải là giải pháp tốt nhất cho các tệp lệnh (tập lệnh bó - dù sao bạn cũng muốn gọi chúng là B-)).

Ngay cả với findstr- nó không tìm thấy điều này trên các phiên bản ngôn ngữ khác của windows. Trên một ngôn ngữ trung tâm châu Âu win7 os, nó cũng trả về ... "dựa trên X86" ... về kết quả nhưng một cái gì đó khác sau đó "loại" đang tìm kiếm. Tôi không chắc chắn rằng nó có thể thay đổi trên các biến thể ngôn ngữ khác của os.

Có lẽ phương pháp "wmic" là đáng tin cậy nhất - nó hỏi os trực tiếp.

Giải pháp nhanh chóng khả thi khác có thể là kiểm tra một biến số (ít nhất là làm việc trên win7 với tôi).

echo %PROCESSOR_ARCHITECTURE%

Ok - nó khá dài để nhớ nhưng có thể a set | findstr ARCHcó thể nhớ được.

Chắc chắn - một số có thể sửa đổi một biến hệ thống để không đáng tin cậy hơn wmic. Nhưng có thể sử dụng nhanh chóng.

Tôi hy vọng tôi có thể giúp ai đó.


Tôi không chắc lệnh echo sẽ hoạt động trên hộp XP của tôi bởi vì tôi chưa bao giờ thấy biến môi trường này trước đây (có lẽ vì tôi chưa bao giờ tìm kiếm nó), nhưng nó thì có. +1 cho một giải pháp đơn giản.
music2myear

11

Có nhiều cách để kiểm tra kiến ​​trúc bộ xử lý trong Windows:

  • Cách nhanh nhất, dễ nhất và tương thích nhất để kiểm tra kiến ​​trúc bộ xử lý trong ít nhất Windows 2000 trở lên là kiểm tra PROCESSOR_ARCHITECTURE biến môi trường :

    echo %PROCESSOR_ARCHITECTURE%

  • Tuy nhiên, điều này có thể cho các kết quả khác nhau, tùy thuộc vào cách mở dấu nhắc lệnh. Để tránh nhận được kết quả không mong đợi, do ứng dụng WoW64 , bạn có thể đọc trực tiếp từ sổ đăng ký (Microsoft đã thực hiện không dưới hai lỗi chính tả trong khóa ):

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

  • Microsoft cũng đề nghị đọc kho thông tin phần cứng từ sổ đăng ký:

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

  • Bạn cũng có thể kiểm tra sự tồn tại của phiên bản x86 của Program Filesthư mục (hoặc biến môi trường trỏ đến nó) vì nó chỉ tồn tại trên hệ thống 64 bit. Không giống như PROCESSOR_ARCHITECTUREbiến, điều này không phụ thuộc vào cách mà dấu nhắc lệnh được chạy do thư mục tồn tại (hoặc không) bất kể dấu nhắc được mở như thế nào:

    • ::via env-var
      if not defined ProgramFiles(x86) echo 32-bit

    • ::via file-system
      if not exist "%systemdrive%\Program Files (x86)" echo 32-bit

Các phương thức này có thể được kết hợp trong một tệp bó (ví dụ cpuinfo.bat) và cung cấp một cách nhanh chóng, nhanh chóng để kiểm tra hệ thống từ dấu nhắc lệnh Windows NT tiêu chuẩn mà không cần phải dùng đến các chương trình hoặc khung khác.

Tệp bó bên dưới đã được thử nghiệm trên các hệ thống 32 bit và Intel 64 bit (vui lòng kiểm tra trên AMD64), cho kết quả chính xác trong <1 giây:

Kết quả kiểm tra

@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

Tôi không thể tìm thấy OSArchitecturetài sản (theo câu trả lời của phoebus) vì vậy tôi sẽ đề nghị sử dụng SystemTypetài sản ComputerSystemthay thế.

Chạy lệnh wmic computersystem get systemtypetừ một dấu nhắc lệnh sẽ cho

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC

4

Dòng lệnh thông thường: wmic OS get OSArchitecture (IIRC)

PowerShell: (gwmi win32_computersystem).SystemType


1
Tôi nhận được Invalid Querytrong XP.
Synetech

1

nếu bạn đang đề cập đến hệ điều hành windows, bạn có thể sử dụng vbscript với 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

Bạn có thể tìm thấy Thông tin đó bằng cách sử dụng "Thông tin hệ thống"

Bắt đầu-> Chạy -> winmsd.exe

Trong "Tóm tắt hệ thống" / Loại hệ thống, bạn có thể tìm thấy phiên bản HĐH

X64 -> 64 bit
X86 -> 32 bit

Câu trả lời của JohnT trong GUI;)


1

Đi đến Bắt đầu »Chạy và sau đó nhập cmd. Bây giờ bạn sẽ ở trong dấu nhắc lệnh. Ở đó bạn có thể gõ systeminfovà sau đó nhấn enter. Phải mất vài giây để có được tất cả thông tin hệ thống của bạn. Bạn có thể tìm thấy dữ liệu bộ xử lý quá.

 Processor(s):              1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
  • Gia đình x86 có nghĩa là, bộ xử lý của bạn là 32 bit.
  • Có nghĩa là x64 Family, bộ xử lý của bạn là 64 bit.

C: \ Tài liệu và Cài đặt \ 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
Mất vài giây thực sự! Và chạy lại nó sẽ không giúp ích vì nó không lưu trữ thông tin. Ngoài ra, các bản cập nhật Windows khiến phần kiến ​​trúc nhanh chóng cuộn ra khỏi màn hình, vì vậy trừ khi bạn có bộ đệm đủ lớn, bạn cần phải đưa nó vào more.
Synetech

0

Mã đơn giản tôi đã sử dụng:

:arch
set p | findstr /i AMD64 > nul
if not errorlevel 1 goto no64
goto eof
:no64
code to execute
:eof
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.