通常,路径类似于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 的版本。
答案1
您还可以使用注册表查找 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
答案3
这个问题回答得太晚了,但我找到了一种更简单的方法来获取 MSVC 目录。诀窍是使用%VS100COMNTOOLS%
变量(或 Visual Studio 的版本,这里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\"
答案4
对于只使用 Microsoft 免费命令行编译器(仍然属于“Visual Studio”的范畴)的少数人,我留下了这条注释。我只安装了 Visual Studio“构建工具”,但在这里找不到有效的解决方案。vswhere.exe
不相信安装了任何东西。没有神奇地设置任何特定的环境变量,工具可以安装在除 之外的地方等C:
。所以我仍然想要一个可以自动定位编译器/链接器/等的批处理文件。
似乎有效的是 WMI 查询,前提是您的批处理文件由可以执行 WMI 查询的 shell 运行。我的 shell 使用 TCC(以前称为“4NT”),(内置)命令非常简单:
wmiquery . "select InstallLocation from MSFT_VSInstance"
即使在非默认位置,这也正确定位了安装路径。不知道在旧版中这可能行得通多久。PowerShell 当然可以做到这一点,但我太不熟悉了,无法引用一个等效的例子。