it-swarm-es.com

Técnica correcta para encontrar la aplicación en versiones de 32 y 64 bits de Vista / Windows 7 de cmd.exe

ANTECEDENTES

Tengo un guión CMD existente que funciona bien. Lanza una aplicación de archivos de programa así

"%PROGRAMFILES%\MyApp\app.exe" 

PROBLEMA

  • funciona bien en versiones de 32 bits de Windows (Vista, Windows 7)
  • pero en las versiones de 64 bits de Windows, la aplicación se instalará en "Archivos de programa (x86)" y no "Archivos de programa" (que es lo que sucede en el sistema operativo de 32 bits)

Lo que estoy buscando

  • Un guión que maneja con sólidamente ambos casos (es decir, "hace lo correcto", dependiendo del sistema operativo que esté activado)
  • un método que usa solo las características encontradas en cmd.exe. I AM Curioso acerca de las soluciones que usan PowerShell, etc., pero aquellos que no me ayudan: PowerShell no estará en las máquinas que se ejecutará este guión.
5
user2666

Similar a la respuesta correcta de Matt . Básicamente en esta versión se verifica la ruta completa.

SET AppExePath="%ProgramFiles(x86)%\MyApp\app.exe"
IF NOT EXIST %AppExePath% SET AppExePath="%ProgramFiles%\MyApp\app.exe"
%AppExePath%
4
splattne

Este es lo mejor que podría encontrar:

set strProgramFiles=%ProgramFiles%
if exist "%ProgramFiles(x86)%" set strProgramFiles=%ProgramFiles(x86)%
"%strProgramFiles%\MyApp\app.exe"
5
Matt Hanson