Geçerli Windows sürümünün komut satırından 32 bit mi yoksa 64 bit mi olduğunu nasıl belirleyebilirim? [çift]


26

İşletim sisteminin 32 bit sürümünü mü yoksa 64 bit Windows sürümünü mü çalıştırdığını öğrenmek için komut satırı nedir?


Hangi dilde?!
Alix Axel

@AlixAxel, komut satırı söylediler , yani muhtemelen bir şey varsa Batch.
Synetech

Yanıtlar:


33

Bunu WMI ile alabilirsiniz:

wmic OS get OSArchitecture

Sistemimdeki örnek:

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

Bu cevabı seviyorum (bazı WMI konsollarını öğrenmem gerekiyor :)), ancak tuş vuruşları için "sistem bilgisine" vermeliyim. ;)
Ƭᴇcʜιᴇ007

XP?
Synetech

18

Komut satırı:

systeminfo | findstr /I type:

Örnek çıktı:

Sistem tipi: X86 tabanlı PC

X86, bu örnekte 32 bit sistemi gösterir.

( /I parametre büyük / küçük harf duyarlı aramayı gösterir )


Size tuş vuruşları için bir puan verdim, ve sonra bunu daha uzun süre yaptınız. hehe :)
ᴇcʜιᴇ007

Benim cevabım bu değil: P
John T

2
Ancak "X86 tabanlı PC", OSArchitecture 32-bit ile aynı mı? Bir x64 işlemcide 32 bit Win XP çalıştırabilirsiniz.
Michael Caron,

İşletim sisteminizin dili Almanca ise (ya da belki türkçe başka herhangi bir şeyse) dikkat edin! systeminfo | findstr /I typ:Bütün giriş olduğu gibi değiştirmek zorundayımSystemtyp: x64-based PC
CeOnSql

systeminfo | findstr /C:"System Type"ayrıca aynı bilgiyi alır, fakat sanırım daha uzun metinler daha az tercih edilir.
Abhijeet

13

Başka bir gönderiye cevap ekleyemem bu yüzden burada. Sonuçlarının pipolanması, systeminfozaman içinde oldukça iyi bir miktar alıyor ve konsola yazıyor, bu nedenle komut dosyaları için en iyi çözüm değil (toplu komut dosyaları - nasılsa onları B- olarak adlandırmayı seversiniz).

Bununla bile findstr- bunu pencerelerin diğer dil sürümlerinde bulamaz. Orta Avrupa dilinde win7 os da döner ... sonuçta "X86 tabanlı" ... ama sonuçta "type" için başka bir şey arıyorlardı. Bunun os'un diğer dil değişkenlerine göre değişebileceğinden emin değilim.

Muhtemelen "wmic" yöntemi en güvenilirdir - doğrudan os'a sorar.

Diğer olası hızlı çözüm, bir değişkeni incelemek olabilir (en azından bende win7 üzerinde çalışıyor).

echo %PROCESSOR_ARCHITECTURE%

Tamam - hatırlamak çok uzun ama mümkün bir set | findstr ARCHhatırlanabilir.

Tabi - bazıları bir sistem değişkenini değiştirebilir, bundan daha güvenilir olamaz wmic. Ancak hızlı bir şekilde kullanılabilir.

Umarım birine yardım edebilirim.


Echo komutunun XP kutumda çalışacağından emin değildim, çünkü bu ortam değişkenini daha önce hiç görmedim (belki de hiç aramamıştım), ancak görüyor. Basit bir çözüm için +1.
music2myear

11

İşlemci mimarisini Windows altında kontrol etmenin birçok yolu vardır:

  • En az Windows 2000 ve üzeri işletim sistemlerinde işlemci mimarisini kontrol etmenin en hızlı, en kolay ve en uyumlu yolu PROCESSOR_ARCHITECTURE ortam değişkenini incelemektir :

    echo %PROCESSOR_ARCHITECTURE%

  • Bununla birlikte, bu komut isteminin açılma şekline bağlı olarak farklı sonuçlar verebilir. WoW64 nedeniyle “beklenmeyen sonuçlar” almaktan kaçınmak için doğrudan kayıt defterinden okuyabilirsiniz (Microsoft , anahtarda en az iki yazım hatası yapmış ):

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

  • Microsoft ayrıca donanım bilgi deposunu kayıt defterinden okumanızı önerir:

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

  • Program FilesDizinin x86 sürümünün (veya onu işaret eden ortam değişkeninin ) varlığını da yalnızca 64 bit sistemde var olacağından kontrol edebilirsiniz. PROCESSOR_ARCHITECTUREDeğişkenden farklı olarak , bu, istemin nasıl açıldığına bakılmaksızın, dizin olduğundan (veya olmadığından) komut isteminin çalıştırılma biçimine bağlı değildir:

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

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

Bu yöntemler tek bir toplu iş dosyasında (örn. cpuinfo.bat) Birleştirilebilir ve sistemi başka bir programa veya çerçeveye başvurmaya gerek kalmadan standart bir Windows NT komut isteminden kontrol etmek için güzel, yıldırım hızlı bir yol sağlar.

Aşağıdaki toplu iş dosyası, 32 bit ve Intel 64 bit sistemlerde test edildi (lütfen AMD64'te test edin), <1 saniyede doğru sonuçlar vererek:

Test sonuçları

@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Özelliği bulamadım (phoebus'un cevabına göre), bu yüzden bu SystemTypeözelliği kullanmayı öneriyorum ComputerSystem.

Komutu wmic computersystem get systemtypebir komut isteminden çalıştırmak,

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC

4

Düzenli komut satırı: wmic OS get OSArchitecture (IIRC)

Güç kalkanı: (gwmi win32_computersystem).SystemType


1
Ben olsun Invalid QueryXP'de.
Synetech

1

Windows işletim sistemine başvuruyorsanız, vbscript ile WMI kullanabilirsiniz.

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

Bu bilgileri "Sistem Bilgisi" ni kullanarak bulabilirsiniz.

Başlat-> Çalıştır -> winmsd.exe

"Sistem Özeti" / Sistem Türü altında, işletim sistemi sürümünü bulabilirsiniz.

X64 -> 64 Bit
X86 -> 32 Bit

JohnT'nin GUI'deki cevabı;)


1

Başlat »Çalıştır'a gidin ve yazın cmd. Şimdi komut isteminde olacaksın. Orada systeminfoyazıp ardından enter tuşuna basabilirsiniz. Tüm sistem bilgilerinizi almak birkaç saniye sürer. İşlemci verilerini de bulabilirsiniz.

 Processor(s):              1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
  • x86 Ailesi, işlemcinizin 32-bit olduğu anlamına gelir.
  • x64 Ailesi, işlemcinizin 64-bit olduğu anlamına gelir.

C: \ Documents and Settings \ mr85464> sistem bilgileri

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
Gerçekten de birkaç saniye sürer! Ve tekrar çalıştırmak, bilgileri önbelleğe almaz çünkü yardımcı olmaz. Ayrıca, Windows güncelleştirmeleri, mimariyle ilgili kısmın ekrandan hızla çıkmasına neden olur, bu nedenle yeterince büyük bir arabellekiniz olmadıkça, onu boruya aktarmanız gerekir more.
Synetech

0

Kullandığım basit kod:

:arch
set p | findstr /i AMD64 > nul
if not errorlevel 1 goto no64
goto eof
:no64
code to execute
:eof
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.