Como posso determinar se a versão atual do Windows é de 32 ou 64 bits na linha de comando? [duplicado]


26

Qual é a linha de comando para descobrir se o sistema operacional está executando uma versão de 32 bits ou 64 bits do Windows?


Em que língua?!
Alix Axel

@AlixAxel, bem, eles disseram linha de comando , então presumivelmente, se houver, Batch.
22412 Synetech

Respostas:


33

Você pode obter isso via WMI:

wmic OS get OSArchitecture

Exemplo no meu sistema:

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

Eu gosto desta resposta (preciso aprender um pouco do console WMI :)), mas preciso fornecê-la ao "systeminfo" para pressionar as teclas. ;)
Ƭᴇcʜιᴇ007 15/01/10

XP?
Synetech

18

Linha de comando:

systeminfo | findstr /I type:

saída de exemplo:

Tipo de sistema: PC baseado em X86

X86 indica um sistema de 32 bits neste exemplo.

( /I parâmetro indica pesquisa que não diferencia maiúsculas de minúsculas )


Eu dei a você um ponto para pressionar as teclas e depois você aumentou. hehe :)
Ƭᴇcʜιᴇ007

Não é minha resposta: P
John T

2
Mas o "PC baseado em X86" é o mesmo que o OSArchitecture de 32 bits? Você pode executar o Windows XP de 32 bits em um processador x64.
Michael Caron

tenha cuidado se o idioma do seu sistema operacional for alemão (ou talvez outro que não seja o inglês)! Eu tenho que mudar para systeminfo | findstr /I typ:que toda a entrada éSystemtyp: x64-based PC
CeOnSql

systeminfo | findstr /C:"System Type"também recupera a mesma informação, mas acho que textos mais longos são menos preferidos.
Abhijeet

13

Não consigo anexar resposta a outro post aqui. Pipetar o resultado de systeminfo- está demorando bastante tempo e grava no console, portanto, não é a melhor solução para arquivos de comando (scripts em lote - de qualquer maneira que você queira chamá-los de B-)).

Mesmo com o findstr- ele não encontra isso na versão do Windows em outro idioma. Em um idioma da Europa Central, o win7 também retorna ... "baseado em X86" ... no resultado, mas outra coisa que o "tipo" estava procurando. Não tenho certeza de que ele possa variar em outras variantes de idioma do sistema operacional.

Provavelmente o método "wmic" é o mais confiável - ele pergunta diretamente ao sistema operacional.

Outra solução rápida possível é examinar uma variável (pelo menos trabalhando em win7 para mim).

echo %PROCESSOR_ARCHITECTURE%

Ok - é bastante longo para lembrar, mas é possível lembrar um set | findstr ARCHpossível.

Claro - alguns podem modificar uma variável de sistema para não ser tão confiável quanto isso wmic. Mas pode ser usado rapidamente.

Espero poder ajudar alguém.


Eu não tinha certeza de que o comando echo funcionaria na minha caixa do XP porque nunca vi essa variável de ambiente antes (talvez porque nunca a procurei), mas funciona. +1 para uma solução simples.
#

11

Existem várias maneiras de verificar a arquitetura do processador no Windows:

  • A maneira mais rápida, fácil e compatível de verificar a arquitetura do processador em pelo menos o Windows 2000 e superior é examinar a PROCESSOR_ARCHITECTURE variável de ambiente :

    echo %PROCESSOR_ARCHITECTURE%

  • No entanto, isso pode gerar resultados diferentes, dependendo da maneira como o prompt de comando é aberto. Para evitar a obtenção de "resultados inesperados" devido ao WoW64 , você pode lê-lo diretamente do registro (a Microsoft fez nada menos que dois erros de digitação na chave ):

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

  • A Microsoft também sugere a leitura do armazenamento de informações de hardware no registro:

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

  • Você também pode verificar a existência da versão x86 do Program Filesdiretório (ou a variável de ambiente que aponta para ele), pois ela existiria apenas em um sistema de 64 bits. Diferente da PROCESSOR_ARCHITECTUREvariável, isso não depende da maneira como o prompt de comando é executado, pois o diretório existe (ou não), independentemente de como o prompt é aberto:

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

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

Esses métodos podem ser combinados em um único arquivo em lotes (por exemplo, cpuinfo.bat) e fornecem uma maneira rápida e agradável de verificar o sistema em um prompt de comando padrão do Windows NT, sem a necessidade de recorrer à execução de outros programas ou estruturas.

O arquivo em lote abaixo foi testado em sistemas de 32 bits e Intel de 64 bits (teste no AMD64), fornecendo resultados corretos em <1 segundo:

Resultado dos testes

@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

Não consegui encontrar a OSArchitecturepropriedade (conforme resposta de phoebus), então sugiro usar a SystemTypepropriedade ComputerSystem.

A execução do comando wmic computersystem get systemtypeem um prompt de comando fornece

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC

4

Linha de comando regular: wmic OS get OSArchitecture (IIRC)

PowerShell: (gwmi win32_computersystem).SystemType


1
Eu entro Invalid Queryno XP.
22412 Synetech

1

se você estiver se referindo ao sistema operacional Windows, poderá usar o vbscript com o 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

1

Você pode encontrar essas informações usando "Informações do sistema"

Iniciar-> Executar -> winmsd.exe

Em "Resumo do sistema" / Tipo de sistema, você pode encontrar a versão do sistema operacional

X64 -> 64 bits
X86 -> 32 bits

Resposta de JohnT na GUI;)


1

Vá em Iniciar »Executar e digite cmd. Agora você estará no prompt de comando. Lá você pode digitar systeminfoe pressionar enter. Demora alguns segundos para obter todas as informações do sistema. Você também pode encontrar os dados do processador.

 Processor(s):              1 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 10 GenuineIntel
  • Família x86 significa que seu processador é de 32 bits.
  • Família x64 significa que seu processador é de 64 bits.

C: \ Documents and Settings \ mr85464> informações do sistema

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
Demora alguns segundos mesmo! E executá-lo novamente não ajudará porque não armazena em cache as informações. Além disso, as atualizações do Windows fazem com que a parte da arquitetura role rapidamente para fora da tela; portanto, a menos que você tenha um buffer grande o suficiente, precisará inseri-lo more.
Synetech

0

Código simples que eu usei:

:arch
set p | findstr /i AMD64 > nul
if not errorlevel 1 goto no64
goto eof
:no64
code to execute
:eof
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.