因此,这可能要晚一些,但是实际问题是一个错误,或者是三个批处理文件中相同错误的重复。
C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ Tools \ VCVarsQueryRegistry.bat
C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ Tools \ vsvars32.bat
C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \ vcvars32.bat
错误模式无处不在,for循环用于遍历注册表值。看起来像这样:
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
@if "%%i"=="10.0" (
@SET "VS100COMNTOOLS=%%k"
)
)
问题是%% i的第二次出现。循环构造的工作方式是第一个%%变量是第一个标记,第二个是第二个标记,依此类推。因此,第二个%% i应该是%% j(或您想要的任何值),以便它指向可能为“ 10.0”的值。您可以告诉开发人员想要使用i,j,k作为值,因为在if中的@SET中,他们使用%% k。这将是路径。
因此,简而言之,请遍历上面三个文件中的所有这些类型的循环,并将第二次出现的%% i更改为%% k,一切将按预期进行。所以它应该看起来像这样:
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
@if "%%j"=="10.0" (
@SET "VS100COMNTOOLS=%%k"
)
)
希望这可以帮助。不知道这是否适用于所有版本。我只知道它确实适用于VS 2010(SP1)。