Como obter o caminho de instalação do Visual Studio em um arquivo em lotes

7

Normalmente, o caminho é algo como C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\ .

No Visual Studio, pode-se usar $(VCInstallDir)$ para obter este caminho.

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

Eu sei que é possível usar a variável de ambiente %VS100COMNTOOLS% em um arquivo em lotes para obter um caminho semelhante que é C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\ .

A solução não deve depender da versão do VS.

    
por user565739 21.01.2013 / 23:45

4 respostas

4

Você também pode usar o registro para encontrar o caminho para o diretório de instalação do Visual Studio. Você teria que adicionar lógica extra para lidar com diferentes versões do VS que podem ser instaladas, por exemplo, 10.0 ou 11.0.

@ECHO OFF
setlocal ENABLEEXTENSIONS
; 32-bit system:
set KEY_NAME="SOFTWARE\Microsoft\VisualStudio.0\Setup\VS"
; 64-bit system:
; set KEY_NAME="SOFTWARE\WOW6432Node\Microsoft\VisualStudio.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
    
por 22.01.2013 / 00:19
2

Bem atrasado para esta questão, mas encontrei uma maneira mais simples de obter o diretório do MSVC. O truque é usar a variável %VS100COMNTOOLS% (ou a versão do seu visual studio, aqui 100 is 10.0 ), que é garantida a existência mesmo sem chamar o arquivo em lote ..\VC\vcvarsall.bat .

A variável

%VCInstallDir% cai para isto como está vazia até que vcvarsall.bat seja chamado, mas não podemos chamar o arquivo se não soubermos o caminho completo.

O %VS100COMNTOOLS% , por outro lado, existe e retorna algo como:

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

Então, um simples corte dos últimos caracteres parece bom:

echo "%VS100COMNTOOLS:~0,-14%VC\"
    
por 27.10.2015 / 04:34
1

Parece que VCInstallDir é uma variável de ambiente independente da versão do Visual Studio.

echo %VCInstallDir%

Isso pode ser usado em um arquivo de lote.

    
por 23.10.2013 / 15:10
0

Você pode usar um método semelhante a este para detectar o nível de bits do seu 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.
)

Depois, você pode usar isso para descobrir onde o Visual Studio está localizado. Isso realmente depende do que você está fazendo. Você também pode usar um 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%.
)

Eu poderia continuar e falar sobre diferentes maneiras de fazer isso. Depende de você dependendo da sua situação.

    
por 22.01.2013 / 00:00