如何在批处理文件中获取 Visual Studio 安装路径

如何在批处理文件中获取 Visual Studio 安装路径

通常,路径类似于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

使用对比位置实用程序是 VS 捆绑包的一部分(正式的),但也可以与 MSVC 分开使用。

> vswhere.exe -latest -property installationPath
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community

这里您可能会发现更多详细信息

答案3

这个问题回答得太晚了,但我找到了一种更简单的方法来获取 MSVC 目录。诀窍是使用%VS100COMNTOOLS%变量(或 Visual Studio 的版本,这里10010.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 当然可以做到这一点,但我太不熟悉了,无法引用一个等效的例子。

相关内容