Làm cách nào để xác định xem Windows của tôi là 32 bit hay 64 bit bằng cách sử dụng lệnh? [bản sao]


79

Các bản sao có thể có:
Làm thế nào để biết máy tính có CPU 64 bit hay HĐH
Phát hiện Windows Server phiên bản 32/64 bit trong phiên bản CLI
OS: 32 bit hay 64 bit?

Làm cách nào để xác định xem hệ thống Windows của tôi là 32-bit hay 64-bit từ dòng lệnh?

Tôi muốn biết bitness của hệ điều hành, không phải phần cứng.

Câu hỏi này chỉ áp dụng đúng cho dòng lệnh , tôi không muốn bất kỳ giải pháp GUI nào.


1
Hmm, thật buồn khi systeminfokhông liệt kê điều này.
Tamara Wijsman

@MaQleod - Cá nhân tôi cho rằng chỉ vì câu trả lời của bạn phù hợp với cả hai, rằng các câu hỏi không trùng lặp chính xác bởi vì đây là một kịch bản cụ thể hơn nhiều. Tôi không biết câu trả lời của bạn có phù hợp với 'chỉ dòng lệnh' không vì nó cần một tiện ích bổ sung, nhưng nếu là tôi, tôi sẽ đăng nó dưới dạng câu trả lời ở đây.
Shinrai

@MaQleod Cá nhân tôi sẽ không gọi nó là bản sao vì nó yêu cầu một giải pháp chỉ dành cho dòng lệnh cụ thể. Câu hỏi bạn liên kết có câu trả lời được chấp nhận cho giải pháp GUI.
Ben Richards

1
Cảm ơn bạn đã chỉnh sửa + câu trả lời. Tôi đã chọn câu trả lời phù hợp nhất với tình huống của tôi.
Tiêu cực

Tôi cuối cùng đã tìm thấy những gì IS là một bản sao chính xác của điều này. (Bài đăng được liên kết cụ thể chỉ tham khảo dòng lệnh và thậm chí cung cấp giải pháp chính xác của tôi.)
Shinrai

Câu trả lời:


123

Từ một dấu nhắc lệnh nâng cao, gõ wmic os get osarchitecture. Đầu ra khá rõ ràng, tôi nghĩ - nó sẽ trả về "32 bit" hoặc "64 bit".


Điều này nghe có vẻ giống như giải pháp tôi sử dụng ... Bây giờ tôi đã biết về nó.
James T Snell

2
Hoặc để làm điều tương tự trong Powershell nếu bạn đang sử dụng máy W7 hoặc hệ điều hành Windows khác nơi bạn đã cài đặt PS: (gwmi win32_OperatingSystem) .OSArch architecture
EBGreen

2
Không hoạt động ở đây trên Windows XP. Lỗi trả về: Truy vấn không hợp lệ.
dùng606723

1
Hãy cẩn thận : phải là quản trị viên để chạy WMIC.
Đột phá

@ user606723 - Tôi không có cài đặt XP tiện dụng để kiểm tra, nhưng tôi không nghĩ rằng các móc WMI đã thay đổi nhiều như vậy. OP đã không chỉ định một hệ điều hành, để công bằng, nhưng tôi sẽ phải tự kiểm tra điều này.
Shinrai

56

Chương trình giao diện điều khiển systeminfo sẽ hiển thị điều này. Bạn sẽ muốn tìm dòng "Loại hệ thống:". Đối với các hệ thống 32 bit, nó sẽ nói "PC dựa trên x86". Đối với các hệ thống 64 bit, nó sẽ nói "PC dựa trên x64".

Hoặc, đối với phương pháp nhanh hơn, bạn chỉ cần kiểm tra biến môi trường PROCESSOR_ARCHITECTURE. Các hệ thống 64 bit sẽ nói hệ thống AMD64 và 32 bit sẽ nói "x86". Để kiểm tra điều này, bạn có thể chỉ cần lặp lại:

echo %PROCESSOR_ARCHITECTURE%

David Wang tại MSDN Blogs mở rộng dựa trên HOWTO này : Phát hiện nhân chứng quá trình


Điều này không hiển thị loại PROCESSOR, không phải loại hệ điều hành đã cài đặt?
Shinrai

Tôi không nghĩ vậy, vì chế độ 32 bit và chế độ 64 bit là các chế độ khác nhau mà bộ xử lý có thể có. Bộ xử lý có thể ở chế độ 32 bit và tôi không nghĩ HĐH sẽ biết nếu có thể chuyển sang chế độ 64 bit. Tuy nhiên, đó là một điểm tốt, đó là điều cần phải được kiểm tra. Vì tôi biết anh tôi có cài đặt Win 7 32 bit trên bộ xử lý có khả năng 64 bit, tôi sẽ yêu cầu anh ấy kiểm tra cho tôi.
Ben Richards

Vâng, tôi không chắc chắn (do đó là phản ứng dự kiến) và thật không may, không có gì hữu ích để tự kiểm tra. Tôi nghĩ rằng đây chỉ là một chuỗi mà một bộ xử lý đã báo cáo lại, bất kể nó hoạt động như thế nào. Nó sẽ hữu ích để biết chắc chắn.
Shinrai

4
Nếu bạn chạy HĐH 32 bit trên hệ thống 64 bit,% PROCESSOR_ARCHITECTURE% sẽ vẫn là "x86". Trong hầu hết các trường hợp, HĐH 64 bit có thể chạy các chương trình 32 bit, nhưng điều này không hoạt động theo cách khác.
bobbymcr

2
tăng phiếu bầu như echo% PROCESSOR_ARCHITECTURE% hoạt động ngay cả trong shell lệnh của máy chủ sql. Ở đâu đó, khi os os os os architecture thỉnh thoảng không hoạt động trong shell lệnh của máy chủ sql
Durai Amuthan.H

8

Bạn có thể kiểm tra nếu %PROGRAMFILES(x86)%biến môi trường được khai báo. Trên các hệ thống 32 bit, nó sẽ không được xác định (chỉ có %PROGRAMFILES%thể). Điều này cũng an toàn hơn sau đó chỉ cần kiểm tra xem thư mục Tệp chương trình (x86) có tồn tại hay không, vì nó có thể được di chuyển (hoặc thậm chí xóa).


Cách giải quyết tốt hơn là kiểm tra thư mục, yeah. (Tôi không thích sử dụng cách giải quyết, nhưng nếu bạn đang sử dụng thì đây là cách sử dụng.)
Shinrai

Bắt rất tốt ... Tôi có một lô kiểm tra thư mục, nhưng điều này chắc chắn sẽ thanh lịch hơn.
WernerCD

1
Bạn cũng có thể so sánh các biến %PROGRAMFILES(x86)%%PROGRAMFILES%biến để xem cmd đã được bắt đầu ở chế độ 32 bit hay 64 bit. (Vì trên các cửa sổ 64 bit, bạn vẫn có thể chạy cmd 32 bit.) Ví dụ: IF %PROGRAMFILES(x86)%== %PROGRAMFILES%=> 32 bit cmd (đang chạy trên cửa sổ 64 bit .....) IF %PROGRAMFILES(x86)%<> %PROGRAMFILES%=> 64 bit cmd.
Sam Hasler

8

Tôi đã viết một ứng dụng dòng lệnh đơn giản sẽ cho bạn biết bộ xử lý và hệ điều hành của bạn là 64 bit hay 32 bit.

Ví dụ đọc:

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

Mỗi yêu cầu, đây là nguồn, được biên dịch bằng tùy chọn CLI, được viết bằng 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)

Và đây là một ví dụ nếu bạn muốn chuyển đổi cho CPU (-c) và HĐH (-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
Tôi sẽ rất tuyệt nếu tập tin đi kèm với nguồn. Việc tải xuống một exe nhỏ, đăng lên mediafire và chạy nó là điều không đáng ngại.
artifex

1
@artifex, thêm nguồn.
MaQleod

nó có thể là sai U_U Jocking :)
Pitto

Sẽ thật tuyệt khi biết API tự động đang sử dụng nội bộ gì ..
user606723

3

Điều gì nếu bạn chỉ kiểm tra sự hiện diện của

% HỆ THỐNG %% Tệp chương trình (x86)

hoặc bất cứ điều gì nó được gọi là?


Không phải là một giải pháp siêu hạng, nhưng có lẽ công việc nhanh chóng và bẩn thỉu cho vấn đề cụ thể của bạn?
James T Snell

Bạn đánh bại tôi với giải pháp này, +1. Một hình thức ngắn có thể được dir \Program *.
Tamara Wijsman
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.