Bagaimana cara menentukan apakah Windows saya 32-bit atau 64-bit menggunakan perintah? [duplikat]

79

Kemungkinan Gandakan:
Bagaimana cara mengetahui apakah komputer memiliki CPU atau OS 64-bit
Mendeteksi Windows Server versi 32/64-bit dalam versi CLI
OS: 32-bit atau 64-bit?

Bagaimana cara saya menentukan apakah sistem Windows saya 32-bit atau 64-bit dari commandline?

Saya ingin tahu bitness dari sistem operasi, bukan hardware.

Pertanyaan ini hanya berlaku untuk baris perintah saja , saya tidak ingin ada solusi GUI.

Negatif
sumber
1
Hmm, sangat menyedihkan systeminfotidak mencantumkan ini.
Tamara Wijsman
@ MAQleod - Saya pribadi berpendapat bahwa hanya karena jawaban Anda cocok untuk keduanya, bahwa pertanyaan tersebut bukan duplikat yang tepat karena ini adalah skenario yang jauh lebih spesifik. Saya tidak tahu apakah jawaban Anda cukup cocok dengan 'baris perintah saja' karena ini membutuhkan utilitas tambahan, tetapi jika itu saya, saya akan mempostingnya sebagai jawaban di sini.
Shinrai
@ MaQleod Saya pribadi tidak akan menyebutnya duplikat karena meminta solusi khusus baris perintah saja. Pertanyaan yang Anda tautkan memiliki jawaban yang diterima untuk solusi GUI.
Ben Richards
1
Terima kasih atas jawaban edit +. Saya memilih jawaban yang paling sesuai dengan situasi saya.
Negatif
Saya akhirnya menemukan apa duplikat persis ini. (
Tautan yang terhubung

Jawaban:

123

Dari prompt perintah yang ditinggikan, ketik wmic os get osarchitecture. Outputnya cukup jelas, saya pikir - itu akan mengembalikan "32-bit" atau "64-bit".

Shinrai
sumber
Ini terdengar seperti solusi yang saya gunakan ... Sekarang saya tahu itu.
James T Snell
2
Atau untuk melakukan hal yang sama di Powershell jika Anda menggunakan mesin W7 atau jendela OS lain tempat Anda menginstal PS: (gwmi win32_OperatingSystem) .OSArchitecture
EBGreen
2
Tidak bekerja di sini di Windows XP. Returns Error: Kueri tidak valid.
user606723
1
Peringatan: harus menjadi administrator untuk menjalankan WMIC.
Terobosan
@ user606723 - Saya tidak memiliki XP instal yang mudah untuk diuji, tapi saya tidak berpikir kait WMI telah banyak berubah. OP tidak menentukan OS, untuk bersikap adil, tetapi saya harus mengujinya sendiri.
Shinrai
56

Program konsol systeminfo akan menunjukkan ini. Anda akan ingin mencari baris "Jenis Sistem:". Untuk sistem 32-bit, ia akan mengatakan "PC berbasis x86 '. Untuk sistem 64-bit, ia akan mengatakan" PC berbasis x64 ".

Atau, untuk metode yang lebih cepat, Anda cukup memeriksa variabel lingkungan PROCESSOR_ARCHITECTURE. Sistem 64-bit akan mengatakan AMD64 dan sistem 32-bit harus mengatakan "x86". Untuk memeriksanya, Anda cukup menggema:

echo %PROCESSOR_ARCHITECTURE%

David Wang di MSDN Blogs memperluas HOWTO ini : Detect Process Bitness

Ben Richards
sumber
Bukankah ini menunjukkan tipe PROCESSOR, bukan tipe OS yang diinstal?
Shinrai
Saya rasa tidak, karena mode 32-bit dan mode 64-bit adalah mode yang berbeda dengan prosesor yang ada. Prosesor bisa dalam mode 32-bit, dan saya tidak berpikir OS akan tahu secara inheren jika bisa transisi ke mode 64-bit. Namun, itu poin yang bagus, itu sesuatu yang harus diuji. Seperti yang saya tahu saudara saya memiliki instalasi Win 7 32-bit pada prosesor yang mampu 64-bit, saya akan memintanya untuk memeriksa saya.
Ben Richards
Ya, saya tidak yakin (karenanya tanggapan tentatif) dan sayangnya tidak memiliki sesuatu yang berguna untuk memeriksa diri saya sendiri. Saya pikir ini hanyalah sebuah string yang dilaporkan oleh prosesor tertentu, terlepas dari bagaimana fungsinya. Akan sangat membantu jika mengetahui dengan pasti.
Shinrai
4
Jika Anda menjalankan OS 32-bit pada sistem 64-bit,% PROCESSOR_ARCHITECTURE% masih akan menjadi "x86". Dalam kebanyakan kasus, OS 64-bit dapat menjalankan program 32-bit, tetapi ini tidak bekerja sebaliknya.
bobbymcr
2
beri suara sebagai gema% PROCESSOR_ARCHITECTURE% berfungsi bahkan di dalam shell perintah server sql juga. Di mana sebagai wmic os mendapatkan osarchitecture kadang-kadang tidak berfungsi di shell perintah server sql
Durai Amuthan.H
8

Anda dapat memeriksa apakah %PROGRAMFILES(x86)%variabel lingkungan dideklarasikan. Pada sistem 32-bit, itu tidak akan didefinisikan (hanya %PROGRAMFILES%akan). Ini juga lebih aman daripada memeriksa apakah direktori Program Files (x86) ada, karena dapat dipindahkan (atau bahkan dihapus).

Penerobosan
sumber
Solusi yang lebih baik daripada memeriksa folder, ya. (Saya tidak suka menggunakan solusi, tetapi jika Anda akan ke sini adalah yang akan digunakan.)
Shinrai
Tangkapan yang sangat bagus ... Saya punya batch yang memeriksa folder, tapi ini pasti akan lebih elegan.
WernerCD
1
Anda juga dapat membandingkan %PROGRAMFILES(x86)%dan %PROGRAMFILES%variabel untuk melihat apakah cmd telah dimulai dalam mode 32bit atau 64bit. (Karena pada windows 64 bit Anda masih dapat menjalankan cmd 32bit.) Contoh: IF %PROGRAMFILES(x86)%== %PROGRAMFILES%=> 32bit cmd (yang dijalankan pada windows 64 bit .....) IF %PROGRAMFILES(x86)%<> %PROGRAMFILES%=> 64bit cmd.
Sam Hasler
8

Saya menulis aplikasi command line sederhana yang akan memberi tahu Anda apakah prosesor dan OS Anda 64-bit atau 32-bit.

Contoh pembacaan:

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

Per permintaan, ini sumbernya, dikompilasi menggunakan opsi CLI, ditulis dalam 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)

Dan di sini adalah contoh jika Anda ingin beralih untuk CPU (-c) dan 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
sumber
1
Saya akan senang jika file datang dengan sumber. Agak mengerikan untuk mengunduh exe kecil, diposting ke mediafire, dan menjalankannya.
artifex
1
@artifex, sumber tambahan.
MaQleod
itu bisa salah U_U Bersenda gurau :)
Pitto
Akan menyenangkan untuk mengetahui apa yang API gunakan otomatis di dalamnya ..
user606723
3

Bagaimana jika Anda hanya memeriksa keberadaan

% SYSTEMROOT% \ Program Files (x86)

atau apa pun namanya?

James T Snell
sumber
Bukan solusi super, tapi mungkin cepat dan kotor berfungsi untuk masalah khusus Anda?
James T Snell
Anda mengalahkan saya untuk solusi ini, +1. Bentuk pendek bisa jadi dir \Program *.
Tamara Wijsman