2010-01-15 05:28:57 +0000 2010-01-15 05:28:57 +0000
26
26

Como posso determinar se a versão actual do Windows é 32-bit ou 64-bit a partir da linha de comando?

Qual é a linha de comando para descobrir se o SO está a correr uma versão 32-bit ou 64-bit do Windows?

Antwoorden (9)

34
34
34
2010-01-15 05:38:37 +0000

Pode obter isto através do WMI:

wmic OS get OSArchitecture

Exemplo no meu sistema:

C:\>wmic OS get OSArchitecture
OSArchitecture
32-bit
13
13
13
2011-10-20 15:43:09 +0000

Não posso anexar resposta a outro posto, por isso aqui. Piping o resultado de systeminfo - está a demorar bastante tempo e escreve para a consola, por isso não é a melhor solução para ficheiros de comando (scripts de lote - de qualquer forma Gosta de lhes chamar B-) ).

Mesmo com o findstr - não o encontra na versão de outras línguas do windows. Numa língua central europeia, ganha7 pois também retorna … “X86 based”… sobre o resultado mas algo mais sobre o “tipo” que então o “tipo” procurava. Não tenho a certeza que possa variar em outras variantes linguísticas do os.

Provavelmente o método “wmic” é o mais fiável - pergunta directamente ao os.

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

echo %PROCESSOR_ARCHITECTURE%

Ok - é bastante longo de lembrar mas é possível que um set | findstr ARCH possa ser lembrado.

Claro - alguns podem modificar uma variável do sistema de modo a não serem tão fiáveis como wmic. Mas pode ser usado rapidamente.

espero poder ajudar alguém.

12
12
12
2012-06-24 15:23:24 +0000

Há inúmeras formas de verificar a arquitectura do processador sob Windows:

& - Contudo, isto pode dar resultados diferentes, dependendo da forma como o comando é aberto. Para evitar obter “resultados inesperados” devido a WoW64 , pode lê-lo directamente do registo (a Microsoft fez nada menos que dois erros de digitação na chave ):

& - A Microsoft sugere também a leitura do armazém de informações de hardware do registo:

  • Pode também verificar a existência da versão x86 do directório Program Files (ou a variável de ambiente que aponta para ela) uma vez que só existiria num sistema de 64 bits. Ao contrário da variável PROCESSOR_ARCHITECTURE, isto não depende da forma como o prompt de comando é executado, uma vez que o directório existe (ou não) independentemente da forma como o prompt é aberto:

Estes métodos podem ser combinados num único ficheiro de lote (por exemplo, cpuinfo.bat) e proporciona uma forma agradável e rápida de verificar o sistema a partir de um comando padrão do Windows NT sem necessidade de recorrer à execução de outros programas ou frameworks.

O ficheiro de lote abaixo foi testado em sistemas de 32-bit e Intel 64-bit (por favor teste no AMD64), dando resultados correctos em <1 segundo:

@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![Test results](https://i.stack.imgur.com/4mmyH.png)" | 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.

0x1&

6
6
6
2012-06-24 14:16:19 +0000

Não consegui encontrar a propriedade OSArchitecture (conforme a resposta da phoebus) por isso sugeriria a utilização da propriedade SystemType em ComputerSystem em vez disso.

Executando o comando wmic computersystem get systemtype a partir de um prompt de comando dá

C:\Windows\system32>wmic computersystem get systemtype  

SystemType x64-based PC
4
4
4
2010-01-15 05:42:49 +0000

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

PowerShell: (gwmi win32_computersystem).SystemType

1
1
1
2010-01-15 06:35:11 +0000

Pode encontrar essa informação usando “System Information”

Start-> Run -> winmsd.exe

Em “System Summary”/Tipo de sistema pode encontrar a versão de SO

X64 -> 64 Bit X86 -> 32 Bit

A resposta de JohnT na GUI ;)

1
1
1
2010-01-15 05:38:45 +0000

se se referir ao SO windows, pode usar vbscript com 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
1
1
2012-03-28 07:21:13 +0000

Vá a Start “ Run e depois digite cmd. Agora estará no prompt de comando. Aí pode digitar systeminfo e depois carregar em enter. Demora alguns segundos a obter toda a informação do seu sistema. 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 o seu processador é de 32 bits.
  • x64 Família significa, o 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
0
0
0
2013-06-25 16:19:58 +0000

Código simples que eu utilizei:

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