Jak mogę ustalić, czy bieżąca wersja systemu Windows jest 32-bitowa czy 64-bitowa z wiersza poleceń? [duplikować]

26

Jaki wiersz poleceń ma sprawdzić, czy system operacyjny działa w wersji 32-bitowej czy 64-bitowej w systemie Windows?

Przełom
źródło
W jakim języku?!
Alix Axel,
@AlixAxel, cóż, powiedzieli wiersz poleceń , więc prawdopodobnie Batch.
Synetech

Odpowiedzi:

33

Możesz to uzyskać za pośrednictwem WMI:

wmic OS get OSArchitecture

Przykład w moim systemie:

C:\>wmic OS get OSArchitecture
OSArchitecture
32-bit
ZoogieZork
źródło
Podoba mi się ta odpowiedź (muszę nauczyć się konsoli WMI :)), ale muszę podać ją w polu „systeminfo” w przypadku naciśnięć klawiszy. ;)
ᴇcʜιᴇ007
XP?
Synetech
18

Wiersz poleceń:

systeminfo | findstr /I type:

przykładowe dane wyjściowe:

Typ systemu: komputer oparty na X86

X86 wskazuje system 32-bitowy w tym przykładzie.

( /I parametr wskazuje wyszukiwanie bez rozróżniania wielkości liter )

Dono
źródło
Dałem ci punkt za naciśnięcia klawiszy, a potem to wydłużyłeś. hehe :)
ᴇcʜιᴇ007
To nie moja odpowiedź: P
Jan T
2
Ale czy „komputer oparty na X86” jest taki sam, jak 32-bitowa architektura OSArchitecture? Możesz uruchomić 32-bitowy Win XP na procesorze x64.
Michael Caron
bądź ostrożny, jeśli Twoim językiem systemu operacyjnego jest niemiecki (a może inny niż angielski)! Muszę się zmienić, systeminfo | findstr /I typ:ponieważ cały wpis toSystemtyp: x64-based PC
CeOnSql
systeminfo | findstr /C:"System Type"pobiera również te same informacje, ale wydaje mi się, że dłuższy tekst jest mniej preferowany.
Abhijeet,
13

Nie mogę dołączyć odpowiedzi do innego postu, więc tutaj. Pipingowanie wyniku systeminfo- zajmuje dość dużo czasu i zapisuje na konsoli, więc nie jest najlepszym rozwiązaniem dla plików poleceń (skrypty wsadowe - jakkolwiek chcesz je nazywać B-)).

Nawet z findstr- nie znajduje tego w innej wersji językowej systemu Windows. Na Win7 OS w języku środkowoeuropejskim zwraca również ... wynik oparty na X86 ... ale szukał czegoś innego niż „typ”. Nie jestem pewien, czy może się różnić w innych wersjach językowych systemu operacyjnego.

Prawdopodobnie metoda „wmic” jest najbardziej niezawodna - bezpośrednio pyta system operacyjny.

Innym możliwym szybkim rozwiązaniem może być zbadanie zmiennej (przynajmniej działa u mnie na Win7).

echo %PROCESSOR_ARCHITECTURE%

Ok - to dość długo pamiętać, ale możliwe do set | findstr ARCHzapamiętania.

Pewnie - niektórzy mogą modyfikować zmienną systemową, aby nie była tak niezawodna jak wmic. Ale można go szybko wykorzystać.

Mam nadzieję, że mógłbym komuś pomóc.

RudyD
źródło
Nie byłem pewien, czy polecenie echo zadziała na moim polu XP, ponieważ nigdy wcześniej nie widziałem tej zmiennej środowiskowej (być może dlatego, że nigdy jej nie szukałem), ale tak jest. +1 za proste rozwiązanie.
music2myear
11

Istnieje wiele sposobów sprawdzenia architektury procesorów w systemie Windows:

  • Najszybszym, najłatwiejszym i najbardziej kompatybilnym sposobem sprawdzenia architektury procesorów w systemie Windows 2000 i nowszych jest sprawdzenie PROCESSOR_ARCHITECTURE zmiennej środowiskowej :

    echo %PROCESSOR_ARCHITECTURE%

  • Może to jednak dać różne wyniki, w zależności od sposobu otwarcia wiersza polecenia. Aby uniknąć „nieoczekiwanych wyników” z powodu WoW64 , możesz odczytać go bezpośrednio z rejestru (Microsoft napisał nie mniej niż dwie literówki w kluczu ):

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

  • Microsoft sugeruje również odczytanie magazynu informacji o sprzęcie z rejestru:

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

  • Możesz także sprawdzić, czy istnieje wersja Program Fileskatalogu x86 (lub wskazująca ją zmienna środowiskowa ), ponieważ istniałaby ona tylko w systemie 64-bitowym. W przeciwieństwie do PROCESSOR_ARCHITECTUREzmiennej, nie zależy to od sposobu uruchomienia wiersza polecenia, ponieważ katalog istnieje (lub nie), niezależnie od tego, jak wiersz jest otwierany:

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

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

Metody te można łączyć w jeden plik wsadowy (np. cpuinfo.bat) I zapewnia przyjemny, błyskawiczny sposób sprawdzania systemu ze standardowego wiersza polecenia systemu Windows NT bez konieczności uciekania się do uruchamiania innych programów lub ram.

Poniższy plik wsadowy został przetestowany na systemach 32-bitowych i 64-bitowych Intel (proszę przetestować na AMD64), dając prawidłowe wyniki w <1 sekundę:

Wyniki testów

@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.
Synetech
źródło
5

Nie mogłem znaleźć OSArchitecturewłaściwości (zgodnie z odpowiedzią phoebusa), więc sugerowałbym zamiast tego użyć SystemTypewłaściwości ComputerSystem.

Uruchomienie polecenia wmic computersystem get systemtypez wiersza polecenia daje

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC
SPiRiTS
źródło
4

Zwykła linia poleceń: wmic OS get OSArchitecture (IIRC)

PowerShell: (gwmi win32_computersystem).SystemType

phoebus
źródło
1
Dostaję Invalid QueryXP.
Synetech
1

jeśli masz na myśli system operacyjny Windows, możesz użyć vbscript z 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
użytkownik31894
źródło
1

Informacje te można znaleźć za pomocą „Informacji o systemie”

Start-> Uruchom -> winmsd.exe

W sekcji „Podsumowanie systemu” / typ systemu można znaleźć wersję systemu operacyjnego

X64 -> 64 bity
X86 -> 32 bity

Odpowiedź JohnT w GUI;)

ukanth
źródło
1

Przejdź do Start »Uruchom, a następnie wpisz cmd. Teraz pojawi się wiersz polecenia. Tam możesz wpisać, systeminfoa następnie nacisnąć Enter. Uzyskanie wszystkich informacji o systemie zajmuje kilka sekund. Możesz również znaleźć dane procesora.

 Processor(s):              1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
  • Rodzina x86 oznacza, że ​​twój procesor jest 32-bitowy.
  • Rodzina x64 oznacza, że ​​twój procesor jest 64-bitowy.

C: \ Documents and Settings \ 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
Rami Reddy Mullangi
źródło
2
Rzeczywiście zajmuje kilka sekund! Ponowne uruchomienie nie pomoże, ponieważ nie buforuje informacji. Ponadto aktualizacje systemu Windows powodują, że część dotycząca architektury szybko przewija się poza ekran, więc jeśli nie masz wystarczająco dużego bufora, musisz go podłączyć more.
Synetech,
0

Prosty kod, którego użyłem:

:arch
set p | findstr /i AMD64 > nul
if not errorlevel 1 goto no64
goto eof
:no64
code to execute
:eof
Dion
źródło