我正在执行以下命令:
xcopy /Y /R "%VS140COMNTOOLS%..\IDE\CommonExtensions\Platform\DiagnosticsHub\x86\dbghelp.dll" binaries\msvcr\
此命令将产生以下结果:
找不到文件 - dbghelp.dll
0文件已复制
echo %VS140COMNTOOLS%
产生以下结果 - 我只是扩展了环境变量:
C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ Tools \
同时,以下命令有效:
xcopy /R /Y "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\..\IDE\CommonExtensions\Platform\DiagnosticsHub\x86\dbghelp.dll" binaries\msvcr\
C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \工具\ .. \ IDE \ CommonExtensions \平台\ DiagnosticsHub \ 86 \ dbghelp.dll
1个文件被复制
有什么问题?
答案 0 :(得分:1)
xcopy /Y /R "%VS140COMNTOOLS%..\IDE\CommonExtensions\Platform\DiagnosticsHub\x86\dbghelp.dll" binaries\msvcr\
上面的命令行在4种情况下失败并显示以下错误消息:
找不到文件 - dbghelp.dll
0文件已复制
分配给环境变量VS140COMNTOOLS
的文件夹路径不以反斜杠结尾
这种可能的错误原因显然不是这种情况,因为echo %VS140COMNTOOLS%
打印了带有反斜杠的文件夹路径。
环境变量具有字符串值:
%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\Common7\Tools\
但这不是这种情况,否则echo %VS140COMNTOOLS%
将打印该字符串。
分配给环境变量VS140COMNTOOLS
的文件夹路径有1个或多个尾随空格/标签。
分配给环境变量VS140COMNTOOLS
的文件夹路径以1个或多个前导空格/标签开头。
对于第二个和第三个错误原因,有助于运行echo "%VS140COMNTOOLS%"
并查看输出是否为:
" C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ Tools \"
或
" C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ Tools \"
使用语法set variable=value
很容易导致获取带有分配给环境变量的尾随空格/制表符的值,从而导致在此类错误中使用。解决方案正在使用set "variable=value"
,详见Why is no string output with 'echo %var%' after using 'set var = text' on command line?
为了完整性,使用命令行
定义环境变量VS140COMNTOOLS
set VS140COMNTOOLS="C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\"
使用等号后面的第一个双引号而不是左边的变量名,并且没有尾随空格/制表符会导致执行命令行:
xcopy /Y /R ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\"..\IDE\CommonExtensions\Platform\DiagnosticsHub\x86\dbghelp.dll" binaries\msvcr\
但是这个命令行会导致错误消息:
参数数量无效
因此,也可以排除双引号文件夹路径作为可能的错误原因。
BTW:在命令提示符窗口xcopy
中运行xcopy /?
输出的帮助列出了源和目标参数之后的可选参数。当然可以指定第一个/R /Y
然后指定源文件和目标文件夹,但通常建议使用命令帮助建议的语法。