Cómo obtener la ruta de instalación de Visual Studio en un archivo por lotes

7

Normalmente, el camino es algo así como C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\.

Desde Visual Studio, uno puede usar $(VCInstallDir)$ para conseguir este camino.

Q: But in a batch file, how to get this path?

Sé que uno puede usar la variable de entorno %VS100COMNTOOLS% en un archivo por lotes para obtener un camino similar que es C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\.

La solución no debe depender de la versión de VS.

user565739
fuente

Respuestas:

4

También puede usar el registro para encontrar la ruta al directorio de instalación de Visual Studio. Tendría que agregar lógica adicional para manejar diferentes versiones de VS que podrían instalarse, por ejemplo, 10.0 u 11.0.

@ECHO OFF
setlocal ENABLEEXTENSIONS
; 32-bit system:
set KEY_NAME="SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS"
; 64-bit system:
; set KEY_NAME="SOFTWARE\WOW6432Node\Microsoft\VisualStudio\9.0\Setup\VS"
set VALUE_NAME=ProductDir

FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
    set ValueValue=%%C
)

if defined ValueName (
    @echo Registry Value = %ValueValue%
) else (
    @echo %KEY_NAME%\%VALUE_NAME% not found.
)
pause
Adam
fuente
Bastante seguro de que esto tendrá problemas con los espacios en las rutas de instalación. stackoverflow.com/questions/22352793/…
Craig Ringer
2

Muy tarde para esta pregunta, pero he encontrado una forma más sencilla de obtener el directorio MSVC. El truco es usar %VS100COMNTOOLS% variable (o la versión de su estudio visual, aquí 100 es 10.0 ), que se garantiza que existe incluso sin llamar a la ..\VC\vcvarsall.bat archivo por lotes.

%VCInstallDir% variable cae a esto, ya que está vacío hasta vcvarsall.bat se llama, pero no podemos llamar al archivo si no conocemos la ruta completa.

los %VS100COMNTOOLS% Por otro lado existe y devuelve algo como:

c:\Program Files\Microsoft Visual Visual Studio 10.0\Common7\Tools

Entonces, un simple corte de los últimos personajes parece bueno:

echo "%VS100COMNTOOLS:~0,-14%VC\"

fuente
1

Parece que VCInstallDir es una variable de entorno que es independiente de la versión de Visual Studio.

echo %VCInstallDir%

Eso puede ser usado en un archivo por lotes.

Vilhelm H.
fuente
0

Puede usar un método similar a este para detectar el nivel de bits de su shell de comando particular:

IF "%programfiles%"=="C:\Program Files" (
  ECHO This is a 64-bit cmd.exe shell.
) ELSE (
  ECHO This is a 32-bit cmd.exe shell.
)

Luego, puede usar eso para averiguar dónde se encuentra Visual Studio. Realmente depende de lo que estés haciendo. También podrías usar un método como este:

SET "VS_LOC=%programfiles%\Visual Studio\bin\program.exe"
IF EXIST "%VS_LOC%" (
  ECHO Found a visual studio installation.
) ELSE (
  ECHO Could not find the visual studio install at %VS_LOC%.
)

Podría seguir y seguir sobre diferentes maneras de hacer esto. Depende de usted dependiendo de su situación.

djangofan
fuente