通常、パスは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のバージョンに依存しないようにする必要があります。
レジストリを使用して、VisualStudioインストールディレクトリへのパスを見つけることもできます。インストールされる可能性のあるさまざまなバージョンの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
この質問にはかなり遅れましたが、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\"
VCInstallDirは、VisualStudioのバージョンに依存しない環境変数のようです。
echo %VCInstallDir%
これは、バッチファイルで使用できます。
これと同様の方法を使用して、特定のコマンドシェルのビットレベルを検出できます。
IF "%programfiles%"=="C:\Program Files" (
ECHO This is a 64-bit cmd.exe Shell.
) ELSE (
ECHO This is a 32-bit cmd.exe Shell.
)
次に、それを使用してVisualStudioの場所を特定できます。それは本当にあなたがしていることに依存します。次のような方法を使用することもできます。
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%.
)
私はこれを行うためのさまざまな方法について何度も続けることができました。状況によってはあなた次第です。