Como posso encontrar o programa adequado para usar de acordo com a arquitetura do processador?
This was the script I used:
echo %processor_architecture%%processor_architew6432% | findstr 64 >nul && set "prog=x64\WinRAR x64.exe" || set "prog=x86\WinRAR x86.exe"
Notas:
-
O código acima usado pelo OP foi retirado de este comentário por dbenham .
-
%processor_architew6432%
é normalmente indefinido em um sistema de 64 bits (a exceção é quando um processo de 32 bits é criado por um processo de 64 bits). Consulte Detalhes de implementação do WOW64 para obter mais informações.
Eu normalmente uso wmic OS get OSArchitecture
para obter a nitidez do SO.
O seguinte arquivo em lote deve começar:
@echo off
setlocal enabledelayedexpansion
for /f "usebackq skip=1 tokens=*" %%i in ('wmic OS get OSArchitecture ^| findstr /r /v "^$"') do (
set "_bits=%%i"
rem remove spaces
set "_bits=!_bits: =!"
)
if "%_bits%" EQU "64-bit" (
rem 64bit OS
set "prog=x64\WinRAR x64.exe"
) else (
rem 32bit OS
set "prog=x86\WinRAR x86.exe"
)
rem do something with %prog%
call %prog%
endlocal
Leitura Adicional
- Detalhes de implementação do WOW64
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- findstr - Pesquise strings em arquivos.
- para / f - Comando Loop contra os resultados de outro comando.
- if - Realize condicionalmente um comando.
- wmic - Comando de instrumentação de gerenciamento do Windows.