Visual Studio c++ 构建工具:VsDevCmd.bat / vcvarsall.bat 无法找到一些 [未知] 路径,因此无法找到 运行
Visual Studio c++ build tools: VsDevCmd.bat / vcvarsall.bat fails to find some [unknown] paths and thus to run
我在设置 2017 VC++ 构建工具时遇到问题,无论是独立的还是与 VS 社区版一起安装的。
具体来说,一切似乎都安装正常,但对 vcvarsall.bat
的调用不起作用 - python distutils 抱怨:
ImportError: Building module some_module_name failed: ['distutils.errors.DistutilsPlatformError: Error executing cmd /u /c "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 && set\n']
Process finished with exit code 1
当 运行 vcvarsall.bat
来自 cmd:
C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build>vcvarsall.bat x64
Das System kann den angegebenen Pfad nicht finden.
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.27
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
Das System kann den angegebenen Pfad nicht finden.
Das System kann den angegebenen Pfad nicht finden.
[vcvarsall.bat] Environment initialized for: 'x64'
("Das System kann den angegebenen Pfad nicht finden." 是德语,意思是“系统找不到提供的路径”)
类似于 VsDevCmd.bat
:
C:\Program Files (x86)\Microsoft Visual Studio17\Community\Common7\Tools>VsDevCmd.bat
Das System kann den angegebenen Pfad nicht finden.
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.27
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
Das System kann den angegebenen Pfad nicht finden.
Das System kann den angegebenen Pfad nicht finden.
Das System kann den angegebenen Pfad nicht finden.
我无法让它至少报告找不到哪个路径...
有什么解决办法吗?
尝试了多次重新安装,也尝试了不同版本,(2019 - 相同,独立的 2017 构建工具等)
编辑:我得到了@HansPassant 建议的完整诊断输出;太长了,无法完整粘贴。
- 已满:https://pastebin.com/hTMH9SWD
- 所有出现的“找不到路径”都在下面
注意:错误总是发生在for /F ...
之后
我发现错误前所有目录都以明文形式列出。
唯一的例外是 FEHLER: Der angegebene Registrierungsschlüssel bzw. Wert wurde nicht gefunden.
处的注册键(“错误:未找到注册键或值”),它似乎确实不存在。
>set __VSCMD_VER=
>for /F "tokens=1,2,* delims==+" %A in ('type "C:\Program Files (x86)\Microsoft Visual Studio17\Community\Common7\IDE\devenv.isolation.ini"') do (
if "3" GEQ "3"
if /I "%A" == "SemanticVersion" (
if "3" GEQ "1"
set "__VSCMD_VER=%B"
)
)
**Das System kann den angegebenen Pfad nicht finden.**
[...]
>for /F "tokens=1,2*" %i in ('reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0" /v "InstallationFolder"') DO (if "%i" == "InstallationFolder" (SET WindowsSdkDir=%~k ) )
Das System kann den angegebenen Pfad nicht finden.
[...]
if EXIST "C:\Program Files (x86)\Windows Kits\include\%i\um\winsdkver.h" (
set result=%i
if "!result:~0,3!" == "10." (
set SDK=!result!
if "!result!" == "" set findSDK=1
)
)
)
Das System kann den angegebenen Pfad nicht finden.
[...]
>for /F "tokens=1,2*" %i in ('reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots" /v "KitsRoot10"') DO (if "%i" == "KitsRoot10" (SET UniversalCRTSdkDir=%k ) )
Das System kann den angegebenen Pfad nicht finden.
[...]
>for /F %i IN ('dir "C:\Program Files (x86)\Windows Kits\include\" /b /ad-h /on') DO (
set result=%i
if "!result:~0,3!" == "10." set CRT=!result!
if "!result!" == "" set match=1
)
Das System kann den angegebenen Pfad nicht finden.
[...]
>for /F %a in ('dir "C:\Program Files (x86)\Microsoft Visual Studio17\Community\Common7\Tools\vsdevcmd\ext\*.bat" /b /a-d-h /on') do (call :call_script_helper ext\%a )
Das System kann den angegebenen Pfad nicht finden.
[...]
>for /F "tokens=1,2*" %i in ('reg query "HKLM\SOFTWARE\Microsoft\VisualStudio\VSPerf" /v "CollectionToolsDir"') DO (if "%i" == "CollectionToolsDir" (SET "__collection_tools=%k" ) )
Das System kann den angegebenen Pfad nicht finden.
FEHLER: Der angegebene Registrierungsschlüssel bzw. Wert wurde nicht gefunden.
[...]
>for /F %A in ('type "C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt"') do (set "__VCVARS_TOOLS_VERSION=%A" )
Das System kann den angegebenen Pfad nicht finden.
[...]
>for /F %A in ('type "C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build\Microsoft.VCRedistVersion.default.txt"') do (set "__VCVARS_REDIST_VERSION=%A" )
Das System kann den angegebenen Pfad nicht finden.
这条接缝是 common issue for last months and there was a
- Open the
Registry Editor
(Windows key and type regedit
in the prompt)
- Go to
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
and clear the values.
- If it exists in
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
, delete it as well.
所以 运行 regedit.exe
并删除提到的值以修复 cmd。
我在设置 2017 VC++ 构建工具时遇到问题,无论是独立的还是与 VS 社区版一起安装的。
具体来说,一切似乎都安装正常,但对 vcvarsall.bat
的调用不起作用 - python distutils 抱怨:
ImportError: Building module some_module_name failed: ['distutils.errors.DistutilsPlatformError: Error executing cmd /u /c "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 && set\n']
Process finished with exit code 1
当 运行 vcvarsall.bat
来自 cmd:
C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build>vcvarsall.bat x64
Das System kann den angegebenen Pfad nicht finden.
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.27
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
Das System kann den angegebenen Pfad nicht finden.
Das System kann den angegebenen Pfad nicht finden.
[vcvarsall.bat] Environment initialized for: 'x64'
("Das System kann den angegebenen Pfad nicht finden." 是德语,意思是“系统找不到提供的路径”)
类似于 VsDevCmd.bat
:
C:\Program Files (x86)\Microsoft Visual Studio17\Community\Common7\Tools>VsDevCmd.bat
Das System kann den angegebenen Pfad nicht finden.
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.27
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
Das System kann den angegebenen Pfad nicht finden.
Das System kann den angegebenen Pfad nicht finden.
Das System kann den angegebenen Pfad nicht finden.
我无法让它至少报告找不到哪个路径... 有什么解决办法吗?
尝试了多次重新安装,也尝试了不同版本,(2019 - 相同,独立的 2017 构建工具等)
编辑:我得到了@HansPassant 建议的完整诊断输出;太长了,无法完整粘贴。
- 已满:https://pastebin.com/hTMH9SWD
- 所有出现的“找不到路径”都在下面
注意:错误总是发生在for /F ...
之后
我发现错误前所有目录都以明文形式列出。
唯一的例外是 FEHLER: Der angegebene Registrierungsschlüssel bzw. Wert wurde nicht gefunden.
处的注册键(“错误:未找到注册键或值”),它似乎确实不存在。
>set __VSCMD_VER=
>for /F "tokens=1,2,* delims==+" %A in ('type "C:\Program Files (x86)\Microsoft Visual Studio17\Community\Common7\IDE\devenv.isolation.ini"') do (
if "3" GEQ "3"
if /I "%A" == "SemanticVersion" (
if "3" GEQ "1"
set "__VSCMD_VER=%B"
)
)
**Das System kann den angegebenen Pfad nicht finden.**
[...]
>for /F "tokens=1,2*" %i in ('reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0" /v "InstallationFolder"') DO (if "%i" == "InstallationFolder" (SET WindowsSdkDir=%~k ) )
Das System kann den angegebenen Pfad nicht finden.
[...]
if EXIST "C:\Program Files (x86)\Windows Kits\include\%i\um\winsdkver.h" (
set result=%i
if "!result:~0,3!" == "10." (
set SDK=!result!
if "!result!" == "" set findSDK=1
)
)
)
Das System kann den angegebenen Pfad nicht finden.
[...]
>for /F "tokens=1,2*" %i in ('reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots" /v "KitsRoot10"') DO (if "%i" == "KitsRoot10" (SET UniversalCRTSdkDir=%k ) )
Das System kann den angegebenen Pfad nicht finden.
[...]
>for /F %i IN ('dir "C:\Program Files (x86)\Windows Kits\include\" /b /ad-h /on') DO (
set result=%i
if "!result:~0,3!" == "10." set CRT=!result!
if "!result!" == "" set match=1
)
Das System kann den angegebenen Pfad nicht finden.
[...]
>for /F %a in ('dir "C:\Program Files (x86)\Microsoft Visual Studio17\Community\Common7\Tools\vsdevcmd\ext\*.bat" /b /a-d-h /on') do (call :call_script_helper ext\%a )
Das System kann den angegebenen Pfad nicht finden.
[...]
>for /F "tokens=1,2*" %i in ('reg query "HKLM\SOFTWARE\Microsoft\VisualStudio\VSPerf" /v "CollectionToolsDir"') DO (if "%i" == "CollectionToolsDir" (SET "__collection_tools=%k" ) )
Das System kann den angegebenen Pfad nicht finden.
FEHLER: Der angegebene Registrierungsschlüssel bzw. Wert wurde nicht gefunden.
[...]
>for /F %A in ('type "C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt"') do (set "__VCVARS_TOOLS_VERSION=%A" )
Das System kann den angegebenen Pfad nicht finden.
[...]
>for /F %A in ('type "C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build\Microsoft.VCRedistVersion.default.txt"') do (set "__VCVARS_REDIST_VERSION=%A" )
Das System kann den angegebenen Pfad nicht finden.
这条接缝是 common issue for last months and there was a
- Open the
Registry Editor
(Windows key and typeregedit
in the prompt)- Go to
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
and clear the values.- If it exists in
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
, delete it as well.
所以 运行 regedit.exe
并删除提到的值以修复 cmd。