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

25

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

    
por Breakthrough 15.01.2010 / 06:28

10 respostas

33

Você pode obter isso via WMI:

wmic OS get OSArchitecture

Exemplo no meu sistema:

C:\>wmic OS get OSArchitecture
OSArchitecture
32-bit
    
por 15.01.2010 / 06:38
18

Linha de comando:

systeminfo | findstr /I type:

exemplo de saída:

System type:               X86-based PC

O X86 indica um sistema de 32 bits neste exemplo.

( /I parâmetro indica pesquisa sem distinção entre maiúsculas e minúsculas )

    
por 15.01.2010 / 06:38
13

Eu não posso anexar a resposta a outro post, então aqui. Piping o resultado de systeminfo - está demorando muito tempo e escreve no console, então não é a melhor solução para os arquivos de comando (scripts em lote - de qualquer forma, você gosta de chamá-los de B-).

Mesmo com o findstr - ele não encontra isso em outra versão de idioma do Windows. Em uma linguagem européia central win7 os também retorna ... "baseado em X86" ... no resultado, mas algo diferente do que o "tipo" estava procurando. Não tenho certeza se pode 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 pode ser examinar uma variável (pelo menos trabalhando no win7 em mim).

echo %PROCESSOR_ARCHITECTURE%

Ok - é bem longo lembrar, mas é possível lembrar um set | findstr ARCH .

Claro - alguns podem modificar uma variável do sistema de modo que não seja confiável do que wmic . Mas pode ser usado rapidamente.

Espero poder ajudar alguém.

    
por 20.10.2011 / 17:43
10

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 acima é examinar a variável de ambiente PROCESSOR_ARCHITECTURE :

    echo %PROCESSOR_ARCHITECTURE%

  • No entanto, isso pode fornecer resultados diferentes, dependendo da maneira como o prompt de comando é aberto. Para evitar "resultados inesperados" devido ao WoW64 , você pode lê-lo diretamente do registro (a Microsoft fez não menos do 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 do registro:

    reg query "HKLM\Hardware\Description\System\CentralProcessorProgram Files" /v Identifier

  • Você também pode verificar a existência da versão x86 do diretório PROCESSOR_ARCHITECTURE (ou da variável de ambiente que aponta para ele), uma vez que só existiria em um sistema de 64 bits. Ao contrário da variável ::via env-var , 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:

    • if not defined ProgramFiles(x86) echo 32-bit a ::via file-system

    • if not exist "%systemdrive%\Program Files (x86)" echo 32-bit a cpuinfo.bat

Esses métodos podem ser combinados em um único arquivo em lote (por exemplo, %code% ) e fornecem uma maneira rápida e rápida de verificar o sistema a partir de um prompt de comando padrão do Windows NT sem precisar executar outros programas ou frameworks.

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

@echooffechoPROCESSOR_ARCHITECTUREvar: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
@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%pre%" | 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.
" | 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.
    
por 24.06.2012 / 17:23
5

Não consegui encontrar a propriedade OSArchitecture (como resposta do phoebus), portanto sugiro usar a propriedade SystemType em ComputerSystem .

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

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC
    
por 24.06.2012 / 16:16
4

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

PowerShell: (gwmi win32_computersystem).SystemType

    
por 15.01.2010 / 06:42
1

se você está se referindo ao sistema operacional Windows, você pode 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
    
por 15.01.2010 / 06:38
1

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

Start-> Run -> winmsd.exe

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

X64 -> 64 Bit
X86 -> 32 Bit

Resposta do JohnT na GUI;)

    
por 15.01.2010 / 07:35
1

Vá para Iniciar »Executar e digite cmd . Agora você estará no prompt de comando. Lá você pode digitar systeminfo e depois pressionar enter. Leva 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>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
    
por 28.03.2012 / 09:21
0

Código simples que usei:

:arch
set p | findstr /i AMD64 > nul
if not errorlevel 1 goto no64
goto eof
:no64
code to execute
:eof
    
por 25.06.2013 / 18:19