Arquivo em lote para Windows7 32 e 64 bits

7

Eu preciso criar um arquivo de lote para o Windows 7. Esse arquivo .bat é apenas para instalar um aplicativo. A questão é que eu preciso saber se o Windows 7 é de 32 bits (e, em seguida, executar um instalador de 32) ou se é um Windows 7 de 64 bits (em seguida, execute o instalador de 64 bits). Qual comando posso usar em um arquivo de lote para saber se o Windows 7 é de 32 ou 64 bits?

Obrigado antecipadamente !!!

    
por Javier Marti 18.05.2010 / 11:00

4 respostas

10

em um ambiente de 64 bits, você terá uma variável de ambiente chamada

ProgramFiles(x86)

em um ambiente de 32 bits, você não tem essa variável. então você pode verificar com

if defined ProgramFiles(x86) (
   REM do stuff for 64bit here
) else (
   REM do stuff for 32bit here
)
    
por 18.05.2010 / 11:45
4

Se você não quiser usar um arquivo temp txt, use um canal:

Set RegQry=HKLM\Hardware\Description\System\CentralProcessor
Set RegQry=HKLM\Hardware\Description\System\CentralProcessor%pre%
REG.exe Query %RegQry%  | Find /i "x86" 
If %ERRORLEVEL% == 0 (
    GOTO X86
) ELSE (
    GOTO X64
)


:X86

Commands here

GOTO END

:X64

commands here

:End
REG.exe Query %RegQry% | Find /i "x86" If %ERRORLEVEL% == 0 ( GOTO X86 ) ELSE ( GOTO X64 ) :X86 Commands here GOTO END :X64 commands here :End
    
por 20.08.2010 / 19:33
3

Quando você está usando DEFINED, você não deve colocar o nome da variável com os sinais%:

if defined ProgramFiles(x86) (
   :: do stuff for 64bit here
) else (
   :: do stuff for 32bit here
)
    
por 03.09.2012 / 10:37
0

Você pode usar a variável de ambiente PROCESSOR_ARCHITECTURE para determinar se o processo em si está sendo executado como 32 bits ou 64 bits. O valor é AMD64 ou x86.

Você precisa ser cuidadoso. Se o arquivo em lotes estiver sendo executado a partir da versão de 32 bits do CMD.EXE (em \ Windows \ SysWOW64), essa variável será definida como "x86", enquanto seria "AMD64" se a partir do CMD.EXE em \ Windows \ System32 em uma versão de 64 bits do Windows.

    
por 20.05.2010 / 05:31