Sí, es absolutamente posible. Simplemente escriba tres archivos .bat. El primero debería verse así:
@echo off
if "%1" == "" goto x86
if not "%2" == "" goto usage
if /i %1 == x86 goto x86
if /i %1 == ia64 goto ia64
goto usage
:x86
if not exist "%~dp0bin\x86.bat" goto missing
call "%~dp0bin\x86.bat"
goto :eof
:ia64
if not exist "%~dp0bin\ia64.bat" goto missing
call "%~dp0bin\ia64.bat"
goto :eof
:usage
echo Error in script usage. The correct usage is:
echo %0 [option]
echo where [option] is: x86 ^| ia64
echo:
echo For example:
echo %0 x86
goto :eof
:missing
echo The specified configuration type is missing. The tools for the
echo configuration might not be installed.
goto :eof
El segundo y el tercer archivo .bat son básicamente iguales, excepto que difieren en su nombre. El primero se llamará x86.bat, el segundo ia64.bat y se colocarán en una carpeta llamada bin que se encuentra sobre el primer archivo bat. Tendrás esto:
PATH\first.bat
PATH\bin\x86.bat
PATH\bin\ia64.bat
El contenido del segundo y tercer archivo .bat debería verse así:
@set PATH=THE PATH YOU WANT
Puede crear un enlace al primer archivo .bat que tendrá la siguiente configuración:
Objetivo:% comspec% / k "PATH \ first.bat" OPCIÓN | Donde OPTION es x86 o ia64
Comience en: RUTA | Donde PATH es el camino a tu primer.bat
El script es el script simplificado que Microsoft usa para iniciar la línea de comando correcta para su entorno de Visual Studio. Simplemente podría expandir estos scripts a N entornos. Al agregar más archivos .bat para diferentes entornos y al editar first.bat con más opciones y declaraciones goto. Espero que se explique por sí mismo.
Y espero que Microsoft no me demande por usar su script.
EDITAR:
Ah, creo que te he entendido mal un poco. Para la línea cmd de 32 bits, el enlace debe crearse como:
Objetivo:% windir% \ SysWoW64 \ cmd.exe "PATH \ first.bat" x86
EDIT2:
Intenta algo como:
if "%ProgramFiles%" == "%ProgramFiles(x86)%" goto x64_PATH
if "%ProgramFiles%" == "%ProgramW6432%" goto x86_PATH
:x64_PATH
@set PATH=YOUR 64 bit PATH
SOME_PATH\your64BitApp.exe
goto :eof
:x86_PATH
@set PATH=YOUR 32bit PATH
SOME_PATH\your32BitApp.exe
goto :eof
echo %programfiles%
muestra una ruta diferente según el tipo de cmd.exe desde el que se ejecuta, perowhere ssleay32.dll
en ambos tipos de cmd.exe (32 bits y 64 bits) no puedo encontrar este archivo DLL y muestra ¿INFO: Could not find files for the given pattern(s).
Alguna idea?