7

Обычно путь выглядит примерно так C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\ .

Из Visual Studio можно использовать $(VCInstallDir)$ чтобы получить этот путь.

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

Я знаю, что можно использовать переменную среды %VS100COMNTOOLS% в командном файле, чтобы получить аналогичный путь, который C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\ .

Решение не должно зависеть от версии VS.

4 ответа4

4

Вы также можете использовать реестр, чтобы найти путь к каталогу установки Visual Studio. Вы должны будете добавить дополнительную логику для обработки различных версий VS, которые могут быть установлены, например, 10.0 или 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
2

Поздно к этому вопросу, но я нашел более простой способ получить каталог MSVC. Хитрость заключается в том, чтобы использовать переменную %VS100COMNTOOLS% (или версию вашей визуальной студии, здесь 100 - 10.0), которая гарантированно существует даже без вызова ..\VC\vcvarsall.bat .

%VCInstallDir% относится к этому, поскольку она пуста до тех пор, пока не будет вызван vcvarsall.bat , но мы не можем вызвать файл, если не знаем полный путь.

%VS100COMNTOOLS% с другой стороны, существует и возвращает что-то вроде:

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

Тогда просто отсечение последних символов кажется хорошим:

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

Похоже, VCInstallDir является переменной среды, которая не зависит от версии Visual Studio.

echo %VCInstallDir%

Это может быть использовано в командном файле.

0

Вы можете использовать метод, подобный этому, для определения уровня битов вашей конкретной командной оболочки:

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

Затем вы можете использовать это, чтобы выяснить, где находится Visual Studio. Это действительно зависит от того, что вы делаете. Вы также можете использовать такой метод:

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%.
)

Я мог бы говорить о разных способах сделать это. Это зависит от вас, в зависимости от вашей ситуации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .