Jak ustalić, czy mój system Windows jest 32-bitowy czy 64-bitowy za pomocą polecenia? [duplikować]

78

Możliwe duplikaty:
Jak sprawdzić, czy komputer ma 64-bitowy procesor lub system operacyjny
Wykryj system Windows Server w wersji 32/64-bit w wersji CLI
OS: 32-bit lub 64-bit?

Jak ustalić, czy mój system Windows jest 32-bitowy czy 64-bitowy z wiersza poleceń?

Chcę poznać bitowość systemu operacyjnego, a nie sprzętu.

To pytanie dotyczy wyłącznie wiersza poleceń , nie chcę żadnych rozwiązań GUI.

Negatywny
źródło
1
Hmm, szkoda, że systeminfotego nie wymieniono.
Tamara Wijsman,
@MaQleod - osobiście twierdzę, że tylko dlatego, że twoja odpowiedź jest odpowiednia dla obu, że pytania nie są dokładnymi duplikatami, ponieważ jest to o wiele bardziej szczegółowy scenariusz. Nie wiem, czy twoja odpowiedź całkiem pasuje do „wiersza poleceń”, ponieważ potrzebuje dodatkowego narzędzia, ale jeśli to byłbym ja, opublikowałbym ją tutaj jako odpowiedź.
Shinrai,
@MaQleod Osobiście nie nazwałbym tego duplikatem, ponieważ prosi o rozwiązanie przeznaczone wyłącznie dla wiersza poleceń. Połączone pytanie ma akceptowaną odpowiedź na rozwiązanie GUI.
Ben Richards,
1
Dziękujemy za edycję + odpowiedzi. Wybrałem odpowiedź, która najlepiej pasuje do mojej sytuacji.
Negatywne
Skończyło się na tym, że JEST to dokładna kopia tego. (Połączony post odnosi się konkretnie tylko do wiersza poleceń, a nawet zapewnia moje dokładne rozwiązanie.)
Shinrai

Odpowiedzi:

122

W wierszu polecenia z podwyższonym poziomem uprawnień wpisz wmic os get osarchitecture. Wydaje mi się, że wyjście jest dość oczywiste - zwróci albo „32-bit”, albo „64-bit”.

Shinrai
źródło
To brzmi jak rozwiązanie, którego użyłbym ... Teraz, kiedy o tym wiem.
James T Snell,
2
Lub zrobić to samo w programie Powershell, jeśli korzystasz z komputera W7 lub innego systemu operacyjnego Windows, na którym zainstalowałeś PS: (gwmi win32_OperatingSystem) .OSArchitektura
EBGreen
2
Nie działa tutaj w systemie Windows XP. Zwraca błąd: nieprawidłowe zapytanie.
user606723,
1
Zastrzeżenie: musi być administratorem, aby uruchomić WMIC.
Przełom
@ user606723 - Nie mam pod ręką instalacji XP do przetestowania, ale nie sądziłem, że haki WMI zmieniły się tak bardzo. OP nie określił systemu operacyjnego, żeby być uczciwym, ale będę musiał to przetestować sam.
Shinrai
56

Program konsoli systeminfo to pokaże. Będziesz chciał poszukać linii „System Type:”. W przypadku systemów 32-bitowych powie „PC oparty na procesorach x86”. W przypadku systemów 64-bitowych powie „PC oparty na procesorach x64”.

Lub, dla szybszej metody, możesz po prostu sprawdzić zmienną środowiskową PROCESSOR_ARCHITECTURE. Systemy 64-bitowe powiedzą AMD64, a systemy 32-bitowe powinny powiedzieć „x86”. Aby to sprawdzić, możesz po prostu powtórzyć:

echo %PROCESSOR_ARCHITECTURE%

David Wang z MSDN Blogs rozwija to HOWTO: Detect Bitity

Ben Richards
źródło
Czy to nie pokazuje typu PROCESORA, a nie typu zainstalowanego systemu operacyjnego?
Shinrai
Nie sądzę, ponieważ tryb 32-bitowy i tryb 64-bitowy to różne tryby, w których może być procesor. Procesor może być w trybie 32-bitowym i nie sądzę, aby system operacyjny wiedział z natury, gdyby mógł przejście do trybu 64-bitowego. Jest to jednak dobra uwaga, jest to coś, co należałoby przetestować. Ponieważ wiem, że mój brat ma 32-bitową instalację Win 7 na 64-bitowym procesorze, poproszę go o sprawdzenie.
Ben Richards,
Tak, nie jestem pewien (stąd wstępna odpowiedź) i niestety nie mam nic przydatnego do sprawdzenia siebie. Myślałem, że to tylko ciąg, który dany procesor zgłosił bez względu na to, jak działa. Dobrze byłoby wiedzieć na pewno.
Shinrai,
4
Jeśli używasz 32-bitowego systemu operacyjnego w 64-bitowym systemie,% PROCESSOR_ARCHITECTURE% nadal będzie mieć wartość „x86”. W większości przypadków 64-bitowy system operacyjny może uruchamiać programy 32-bitowe, ale nie działa to na odwrót.
bobbymcr
2
głosuj w górę, ponieważ echo% PROCESSOR_ARCHITECTURE% działa nawet w powłoce poleceń serwera sql. gdzie wmic os uzyskać osarchitecture czasami nie działa w powłoce poleceń serwera SQL
Durai Amuthan.H
8

Możesz sprawdzić, czy %PROGRAMFILES(x86)%zmienna środowiskowa jest zadeklarowana. W systemach 32-bitowych nie zostanie zdefiniowany ( %PROGRAMFILES%będzie tylko ). Jest to również bezpieczniejsze niż sprawdzanie, czy istnieje katalog Program Files (x86), ponieważ można go przenieść (a nawet usunąć).

Przełom
źródło
Lepsze obejście niż sprawdzanie folderu, tak. (Nie lubię obejść tego problemu, ale jeśli masz zamiar to zrobić, użyj tego.)
Shinrai
Bardzo dobry haczyk ... Mam partię, która sprawdza folder, ale na pewno byłby bardziej elegancki.
WernerCD,
1
Możesz także porównać zmienne %PROGRAMFILES(x86)%i %PROGRAMFILES%, aby sprawdzić, czy cmd został uruchomiony w trybie 32-bitowym czy 64-bitowym. (Ponieważ w 64-bitowym systemie Windows nadal można uruchomić 32-bitowy cmd.) Przykład: JEŻELI %PROGRAMFILES(x86)%== %PROGRAMFILES%=> 32-bitowy cmd (który działa w 64-bitowym systemie Windows .....) JEŻELI %PROGRAMFILES(x86)%<> %PROGRAMFILES%=> 64-bitowy cmd.
Sam Hasler,
8

Napisałem prostą aplikację wiersza poleceń, która powie ci, czy twój procesor i system operacyjny są 64-bitowe, czy 32-bitowe.

Przykład odczytu:

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

Na żądanie, tutaj jest źródło, skompilowane przy użyciu opcji CLI, napisane w 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)

A oto przykład, jeśli chcesz przełączniki dla procesora (-c) i systemu operacyjnego (-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
źródło
1
Byłoby miło, gdyby plik pochodził ze źródła. Pobranie małego pliku exe opublikowanego w mediafire i uruchomienie go jest raczej denerwujące.
artifex,
1
@ artifex, dodane źródło.
MaQleod,
może to być fałszywe U_U Jocking :)
Pitto,
Byłoby miło wiedzieć, jakiego wewnętrznego API używa autoit.
user606723,
3

Co jeśli po prostu sprawdzisz obecność

% SYSTEMROOT% \ Program Files (x86)

czy jak to się nazywa?

James T. Snell
źródło
Nie jest to super rozwiązanie, ale może szybkie i brudne rozwiązania dla twojego konkretnego problemu?
James T Snell,
Pobiłeś mnie do tego rozwiązania, +1. Krótka forma może być dir \Program *.
Tamara Wijsman,