Tengo algunos programas con los que estoy trabajando actualmente, como WinRAR , que tienen las versiones de 32 y 64 bits. Quiero crear un script (VB o Batch) en la raíz de la carpeta del proyecto que pueda "escanear" el programa adecuado para usar de acuerdo con la arquitectura del procesador de las máquinas locales.
¿Podría hacerse esto con un simple truco de nombre de archivo usando variables como WinRAR x86.exe
y WinRAR x64.exe
o usando la arquitectura interna del programa si renombrar los binarios en un escenario dado no es una opción?
He descargado programas como Cheat Engine , que tienen versiones de 32 y 64 bits que también incluyen un binario que puede hacer esto.
¿Se puede hacer esto con una programación de script simple y, de ser así, cómo y con qué formato de script debo usar?
Respuestas:
Use el script por lotes o el script vb para almacenar la salida
wmic os get osarchitecture
y obtendrá un valor de cadena que dice 32 bits o 64 bits. Luego puede usar el típico condicional if-then-else para iniciar el binario apropiado. Problema resuelto.Método alternativo:
La
%PROCESSOR_ARCHITECTURE%
variable de entorno almacena esta información, para comprender los posibles valores que devuelve, consulte esta publicación de blog: https://blogs.msdn.microsoft.com/david.wang/2006/03/27/howto-detect-process-bitness/PS no depende de acceder a la unidad del sistema operativo (recuerde, no siempre es
C:
) buscarProgram Files (x86)
u otros hacks como ese, puede encontrarse con problemas de permisos y no es la forma estándar de hacerlo.fuente
64-bit
y32-bit
en la carpeta de cada programa. Este enfoque es semántico, más fácil de escribir y más escalable :)%PROCESSOR_ARCITECTURE%
variable en mi script. Por lo general, cuando hago un script por lotes que ejecuta otro programa, lo coloco lo más atrás posible, luego coloco la ruta al ejecutable o al objetivo entre comillas comenzando por".\"
. Otras veces uso argumentos (si es posible) después de declarar la ruta de destino. ¿Sería tan amable de dar un ejemplo, suponiendo que las dos rutas posibles son"%X86PROG%\%X86PROG%.exe"
y"%X64PROG%\%X64PROG%.exe%"
?echo %processor_architecture%%processor_architew6432% | findstr 64 >nul && set "prog=%x64prog%\%x64prog%.exe" || set "prog=%x86prog%\%x86prog%.exe"