XCOPY不使用相对路径和环境变量
我执行以下命令,工作没有找到XCOPY不使用相对路径和环境变量
文件 - dbghelp.dll
0文件复制
echo %VS140COMNTOOLS%
产生以下 - 我只是扩大了环境变量:
C:\ Program Files文件(x86)的\微软的Visual Studio 14.0 \ Common7 \工具\
同时,下面的命令作品:
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 \ Tools \ .. \ IDE \ CommonExtensions \ Platform \ DiagnosticsHub \ x86 \ dbghelp.dll
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
的文件夹路径具有一个或多个尾随空格/制表符。分配给环境变量
VS140COMNTOOLS
的文件夹路径以1个或多个前导空格/制表符开头。
有关错误,这将有助于运行echo "%VS140COMNTOOLS%"
看看如果输出的第二个和第三个原因:
“C:\ Program Files文件(x86)的\微软的Visual Studio 14。0 \ Common7 \工具\ “
或
” C:\ Program Files文件(x86)的\微软的Visual Studio 14.0 \ Common7 \工具\”
使用语法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\
但该命令行会导致错误消息:
数无效ö f参数
因此已经双引号的文件夹路径也可以排除为可能的错误原因。
顺便说一下:xcopy
的帮助通过在命令提示符窗口中运行xcopy /?
输出,列出了源和目标参数后的可选参数。当然可以指定第一个/R /Y
,然后指定源文件和目标文件夹,但通常建议使用命令帮助中建议的语法。
很好的答案,但实际上并没有解决问题。 'echo“echo%VS140COMNTOOLS%”'产生'“echo C:\ Program Files文件(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ Tools \”'。 –
这很奇怪。我建议下一步使用免费工具[进程监视器](https://technet.microsoft.com/en-us/sysinternals/processmonitor)从Sysinterals(微软)过滤器设置为__Path包含dbghelp.dll__然后__Include__,运行命令__xcopy__与环境变量引用关联,并在记录的文件系统活动中查找Process Monitor的日志。 – Mofi
这很有趣。碰巧我主要使用PowerShell作为我的日常终端,而我的命令在那里失败。但它在cmd.exe中有效。这是在Windows 10上。 –
批处理文件是只包含这一行还是更多? – geisterfurz007
@ geisterfurz007:我目前正在命令行测试,所以没有更多。只是这个'xcopy'。 –
@ geisterfurz007:斑点。第一行是正确的,我编辑了第二行。 –